terça-feira, 3 de março de 2009

Autocomplete com mentawai

Como podem ver pelos posts, estou tocando dois pequeninos projetos, um em asp.net e outro em j2ee e sem dúvida que prefiro muito mais j2ee, parece que o desenvolvimento flui melhor e acredito que seja pela vasta documentação sobre tudo que se possa pensar, além de parecer gerar uma aplicação bem mais responsiva que asp.net, exatamente no sentido tempo de acesso ao banco de dados oracle como geração da saída para o browser do cliente.

Pois bem, voltemos ao assunto, eu já havia tentado implementar autocomplete com ajaxtoolkit no asp.net através da implementação de um webservice (necessário, mas de implementação simples no visual studio), só que não gerou um bom resultado, sendo apresentados alguns bugs, principalmente quando precisava dar foco no textbox e selecionar o conteúdo através de código.

Já estava preparado para amargurar alguns percalços com mentawai e parti pro abraço, mas fui decepcionado pela simplicidade do processo, sendo o mais complicado incluir os jar do json-lib, ezmorph, json, commons-logging e ajaxtags, pois tentei com os mais atualizados e não consegui rodar a aplicação, então baixei o mentawai completo e copiei dele os jar destas bibliotecas e transcorreu tudo perfeitamente.

Em meu jsp, por exemplo, BuscaMaterial.jsp tenho:

<mtw:inputtext name="descricao" id="descricao" size="50"/>
<div id="completeHere" class="auto_complete"/>
<mtw:ajaxcompleter onsuccess="completeText" source="descricao" target="completeHere" url="Filtro.autoCompleter.mtw">


e no head do meu Template.jsp:

<script type="text/javascript">
function completeText(key, value) {
}
</script>
<mtw:ajaxconfig loadprototype="true"/>


Já o método autoCompleter da action Filtro retorna um Map com a lista que eu desejar:

Map map = new LinkedHashMap();

while (rset.next()) {
BigDecimal numero = rset.getBigDecimal("id");
map.put(numero.longValue(), rset.getString("nome"));
}

output.setValue(AjaxConsequence.KEY, map);


Era isto galera!

2 comentários:

Helio Frota disse...

Parabéns pelo post !

biande disse...

Brigadão Helio! Mas nada disto seria possível sem o mentawai e seu fórum. Abraço