Software, Java & afins

Fabricio Braga, Sun Certified

Autocompletar com Struts 2 e JQuery

escrito por Fabricio Braga em Aug 2009

Um exemplo simples e rápido de como implementar autocomplete em um campo texto com Struts 2 e JQuery.

Primeiro faça o download da ultima versão do JQuery: aqui

Depois faça o download do plugin “James” para o JQuery: aqui.

Agora vamos lá…No header da página, declaramos a função do JQuery, simples assim:

<script type=”text/javascript”>
$(document).ready(function() {

$(”#destinatario”).james(”<%=request.getContextPath()%>/autocomplete.action”, { varname: “destinatario”, minlength: 3});

}
</script>

A função do James recebe como parâmetros aqui neste exemplo apenas o nome do nosso Action e o tamanho mínimo de caracteres no campo para que chamada seja feita para o servidor.  Existem diversos outros parâmetros que podem ser passados, como você poderá ver na página do plugin.

Aqui o nosso textfield, ficaria assim:

<s:textfield id=”destinatario” name=”destinatario” maxlength=”50″ size=”50″ />

Aqui o mapeamento do nosso action, retornando um JSon type:

<action name=”autocomplete” method=”listaDestinatarios”

class=”action.MeuAutocompleteAction”>

<result type=”json”>
<param name=”root”>destinatarios</param>
</result>
</action>

E na classe, precisamos de uma lista com as strings do autocomplete:

private List destinatarios = new ArrayList();
private String destinatario;

public String listaDestinatarios() {
destinatarios =  meuService.findDestinatarios(destinatario);
}

E está feito!  Quando você entrar com texto neste campo o JQuery chamará a função do James que por sua vez fará uma chamada para o seu action e colocará no autocoplete o objeto Json retornado.  Você deverá ver algo parecido com isso:

Autocomplete

Espero ter ajudado!  E qualquer dúvida, poste seu comentário.

<action name=”essilor/buscaDestinatario” method=”listaDestinatarios”
class=”br.com.essilor.opticlick.actions.essilor.BuscaNotaFiscalAction”>
<interceptor-ref name=”defaultStack” />
<result type=”json”>
<param name=”root”>destinatarios</param>
</result>
</action>

Comments are closed.