[+- resolvido] Ajaxtags + Displaytag + Struts / JSP / Tiles

0 respostas
romuloff

Estou tendo um problemão ao utilizar Ajaxtags + Displaytag no meu projeto que usa struts1 (:?) + tiles

[size=18]1- Meu código primário[/size]

JSP:
<html:select property="rede">
  <html:option value="-1">Selecione</html:option>
  <html:options name="selectRedeOptions" property="codigo" labelProperty="nome" collection="redesCollection"  />
</html:select>

<%-- outros itens de formulario aqui em cima --%>

<logic:present name="listaResultado" >
	<div class="divSec">
		<h2>Resultado</h2>
		<div class="divLineForm">
			<display:table name="sessionScope.listaResultado" pagesize="10" 
			     cellspacing="1" class="bg-marrom w-100" id="row" 
			     requestURI="/funcionalidadeXyz/paginarAction.do"
			     export="true">
				<display:caption class="tit">Lista de Resultado</display:caption>
				<display:column property="atributoUm" title="Cod. PC IF" headerClass="sub-tit" />
				<display:column property="atributoDois" title="Nome" headerClass="sub-tit" />
			</display:table>
		</div>
	</div>
</logic:present>
struts-config.xml action. Que serve somente pra manter a estrutura do tiles, pois a lista do resultado da displaytag já está na sessão (listaResultado):
<action
            path="/funcionalidadeXyz/paginarAction"
            forward="tile.funcionalidadeXyz" >
    </action>

[color=red]Problema na hora de mudar de pagina:[/color]

Error 500: ServletException in '/pages/funcionalidadeXyz/formOper.jsp': Cannot find bean under name redesCollection

Como há vários campos (ex: o "select options collection='redesCollection'") na minha página que estão pegando o valor do request e não da sessão; então é lógico e esperado ter dado este erro.

[size=18]2- Tentativa 1 do Ajaxtags[/size]
Mantive meu código e "encapsulei" minha displaytag com o ajaxtags
PS: já utilizando os jars e libs js necessárias

<ajax:displayTag id="displayTagFrame" ajaxFlag="displayAjax">
 <%-- display:table mantido igualzim --%>
		</ajax:displayTag>

[color=red]Problema na hora de mudar de pagina:[/color]
Tentou carregar uma nova pagina dentro da displaytag e deu o mesmo erro no console:

[24/09/08 11:13:20:009 BRT] 00000029 ServletWrappe E SRVE0068E: Exceção lançada não capturada em um dos métodos de serviço do servlet: /pages/funcionalidadeXyz/formOper.jsp. Exceção lançada: javax.servlet.ServletException: Cannot find bean under name redesCollection

[size=18]3- Tentativa 2 do AjaxTags[/size]
Removi meu "requestURI="/funcionalidadeXyz/paginarAction.do" que estava nas propriedades da displaytag.

[color=red]Problema na hora de mudar de pagina:[/color]
Ficou no quase ! Manteve a aparencia de minha pagina, juntamente com os selects carregados (isto é, manteve o request).
Mas ... ao inves de carregar a segunda pagina , sumiu a displaytag e apareceu este erro na pagina:

Error 500: Error - tag.getAsString : component context is not defined. Check tag syntax

E este erro no console:

[24/09/08 11:17:29:244 BRT] 00000029 WebApp E [Servlet Error]-[/portal/tiles-layouts/rootLayout.jsp]: javax.servlet.jsp.JspException: Error - tag.getAsString : component context is not defined. Check tag syntax

[size=18]4- Tentativa 3 do AjaxTags[/size]
Voltei o requestUri com o valor referenciando à pagina (ao inves do paginarAction): "requestURI="*/pages/funcionalidadeXyz/formAndDisplayTag.jsp"

[color=red]Problema na hora de mudar de pagina:[/color]
Ficou no quase, mas piorou da tentativa 2. Pois na hora de mudar a página ele desapareceu com minha displaytag e mostrou um erro sem mudar o resto da pagina (assim como na tentativa 2) . Mas o erro é o erro do request ( inicial ) :

Cannot find bean under name redesCollection

[size=18]5- Possível solução[/size] (não é boa boa se fosse um projeto médio ou grande)

Uma solução é mudar todo o layout de tiles do projeto, separando a parte da displaytag em uma nova página (ao inves de junto com o formulario assim como estava no meu código primario). E depois voltei o requestUri pra display:table , com o valor = "*/pages/funcionalidadeXyz/displayTagFuncXyz.jsp".

[size=16][color=darkblue]"Beleza". Funcionou do jeito que eu queria. Mas no caso de um projeto muito grande não teria como eu mudar todo o layout tiles do projeto para adotar esta solução. Então o que eu faria pra solucionar o problema ???[/color] (solucionar o erro da tentativa 2)[/size]

* = nomes fictícios para facilitar o entendimento dos problemas e soluções genericamente, não levando em conta o real nome dos arquivos no meu projeto

Criado 24 de setembro de 2008
Respostas 0
Participantes 1