AjaxTags - Autocomplete em ActionStruts

3 respostas
A

Boa tarde Pessoal,

eu implementei o autocomplete do ajaxtags e funcionou legal, mas essa implementação era utilizando Servlets. 
Então resolvi passar a servlet para Action (do struts)... funcionou até certo ponto, pois ao retornar a lista para o JSP, 
o ajax nao conseguiu mostrar na tela. A lista foi carregada corretamente pelo meu serviço, mas nao consegui exibir o resultado na tela. Poderiam me ajudar?

Vejam só como ficou o meu sisteminha teste:

//Minha Action

public class ProdutoAutoCompleteAction extends Action {

public ActionForward execute(

ActionMapping mapping,

ActionForm form,

HttpServletRequest request,

HttpServletResponse response)

throws Exception {

try{

//recupero o param
String dsItem = request.getParameter(“dsItem”).trim();

//Chamando serviço de consulta de países (funciona bem até aqui)
List list = service.buscaItemProduto(dsItem);

String xml = new AjaxXmlBuilder().addItems(list, “dsItem”, “cdItem”,true).toString();

//esse código estava no sample do ajaxtags (1.3) onde eu

// realizava um return xml;

//return xml;

request.setAttribute(“xml”, xml);

return null;

} catch (Exception e){

//Melhorar o tratamento de erro

log.error(e);

return null;

}}

}

E o meu struts-config ficou assim:

O código na jsp ficou igual ao que estava quando estava implementado em Servlet

<ajax:autocomplete source=“dsItem” target=“cdItem” baseUrl="/sistematest/autocompleteProduto.do"
className=“autocomplete” indicator=“indicatorProduto” minimumCharacters=“2” />


Quando estava funcionando (em Servlet) o código estava assim:

public class ProdutoAutoCompleteServlet extends BaseAjaxServlet{

protected static Log log = LogFactory.getLog(ExpectedException.class);

public String getXmlContent(HttpServletRequest request, HttpServletResponse response) throws Exception {

String xml = new String();

//recupero o param
String dsItem = request.getParameter(“dsItem”).trim();

try{

//Chamando serviço de consulta de países
List list = service.buscaItemProduto(dsItem);

xml = new AjaxXmlBuilder().addItems(list, “dsPais”, “cdPais”,true).toString();

return xml;

} catch (Exception e){

log.error(e);

return null;

}

}

E ainda tinha a configuração no web.xml para poder funcionar usando o servlet, mas acho que nao vem ao caso, pois eu acredito que o probema esteja no retorno do meu objeto do tipo list para o JSP.
Aguém poderia me dar uma luz ou algo parecido???

Muito Obrigado,
Al Bundy

3 Respostas

A

Velho, vc tem que dar um response.getWriter().write(xml) e joga um return null, a chamada via ajax espera no caso, um xml de resposta. O atributo que vc ta setando não vai ser utilizado pois a pagina não da reload, e sem isso vc não vai conseguir disponibilizar ele no seu jsp.

Alberto

A

Putz, eu fiz essa alteração e continua na mesma. A lista não é exibida no JSP.

Meu deus, oq poderia ser rs rs

Abraço
Al Bundy

alots_ssa:
Velho, vc tem que dar um response.getWriter().write(xml) e joga um return null, a chamada via ajax espera no caso, um xml de resposta. O atributo que vc ta setando não vai ser utilizado pois a pagina não da reload, e sem isso vc não vai conseguir disponibilizar ele no seu jsp.

Alberto

A

Tb tentei fazer o seguinte:

PrintWriter out = response.getWriter();
out.print(xml);

mas nao deu certo tb

Criado 12 de junho de 2008
Ultima resposta 12 de jun. de 2008
Respostas 3
Participantes 2