Struts2 + xml

4 respostas
vinicius_roc

Pessoal preciso de um help de voces.

Estou criando um campo de autocompletar em Jquery usando o plugin interface.

Nesta pagina explica como fazer isso: [url]http://interface.eyecon.ro/docs/autocomplete[/url]

O javascript esta funcionando direitinho, tanto que esta chamando a action.

O problema acredito que seja na hora do retorno. Preciso retornar o seguinte xml:

<?xml version="1.0"?>
<ajaxresponse>
  <item>
    <text><![CDATA[text to display]]></text>
    <value><![CDATA[value to fill]]></value>
  </item>
</ajaxresponse>

e minha action esta assim:

<action name="BuscarListaAssuntoTipoSolicitacao"
			class="br.com.admix.controller.action.atendimento.atendimento.SolicitacaoAtendimentoAction"
			method="buscarListaAssuntoTipoSolicitacao">
			<result type="dispatcher">/dynamic/cadastro/atendimento/atendimento/response.jsp</result>
		</action>

Meu método:

public String buscarListaAssuntoTipoSolicitacao(){
		
		atendimento = ContextLocator.getService(AtendimentoService.class).findById(atendimento.getId());
		
		populaComboAssuntoTipoSolicitacao(CRUDOperation.LISTAR, getAtendimento().getPublico(), getAtendimento().getBeneficio());
		
		response = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ajaxresponse>\n";
		
		for(ComboAssuntoAtendimentoDTO assuntoTipoSolicitacao : listaAssuntoTipoSolicitacao){
			response += "<item>\n<text><![CDATA[" + assuntoTipoSolicitacao.getAssuntoVO().getDescricao() + "/" + assuntoTipoSolicitacao.getTipoSolicitacaoVO().getDescricao() + "]]></text>\n";
			response += "<value><![CDATA[" + assuntoTipoSolicitacao.getAssuntoVO().getId() + ";" + assuntoTipoSolicitacao.getTipoSolicitacaoVO().getId() + "]]></value>\n";
			response += "</item>\n";
		}
		
		response += "</ajaxresponse>";
		
		return SUCCESS;
	}

E minha pagina de retorno Response.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ page contentType="text/html; charset=ISO-8859-1"%>
<%	
	response.setHeader("Pragma", "no-cache");
	response.setHeader("Cache-Control", "no-cache");
	response.setDateHeader("Expires", 0); 
%>
${response}

Me judem por favor.. O que esta errado? e como posso fazer para funcionar?

Muito obrigado

4 Respostas

jyoshiriro

Amigo, vocês está usando o dojo plugin (tags sx) ?

Se estiver ele é IMCOMPATÍVEL os outras tecnologias javascript. O dojo simplesmente retira e evita a execução de todos os javascripts de seu JSP caso exista alguma tag <sx… e este JSP foi chamado via ajax.

Mas, qual o erro que dá pra vc?

vinicius_roc

Não, isso eh em Jquery

vinicius_roc

Pessoal consegui =D;

Foi só mudar o content-type de text/html para text/xml

Só estou com um segundo problema =/

A primeira vez q digito, ele exibe corretamente, entao se eu apago e começo a digitar ele mostra o valor no campo mas ja não mostra mais a lista d opções.

Alguem sabe pq isso ocorre e/ou como posso resolver?

Muito Obrigado.

Att,

Vinicius Roberto

jyoshiriro

Amigo, eu sei que se trata de jquery.

Eu quis previni-lo justamente do problema que se tem ao tentar usar dojo + jquery no struts2, entendeu?

Quanto a esse novo erro, sugiro o uso do httpfox no firefox que ajuda muito em depurar problemas com ajax.

Criado 18 de dezembro de 2009
Ultima resposta 18 de dez. de 2009
Respostas 4
Participantes 2