Problema com tiles usando struts

4 respostas
P

Pessoal estou com o seguinte problema usando tiles junto com o struts.

SOLUÇÃO
Eu tenho a seguinte configuração:
minhaApp/jsp/aBody.jsp - simples jsp.
minhaApp/jsp/bBody.jsp - simples jsp.
minhaApp/jsp/footer.jsp - simples jsp.
minhaApp/jsp/header.jsp - simples jsp.
além de minhaApp/jsp/layout.jsp com as seguintes configurações:

layout.jsp
<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>

<html> 
 <body> 
 <%-- include header --%>
 <tiles:insert attribute="header"/> 
 <%-- include body --%> 
 <tiles:insert attribute="body"/> 
 <%-- include footer --%> 
 <tiles:insert attribute="footer"/> 
 </body> 
 </html>
e também minhaApp/jsp/inicio.jsp com as seguintes configurações: inicio.jsp
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<html:link page="/a.do">A</html:link>
<html:link page="/b.do">B</html:link>
Em tiles-def.xml pessoal eu tenho o seguinte:
<?xml version="1.0" encoding="ISO-8859-1" ?>

 <!DOCTYPE tiles-definitions PUBLIC
       "-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN"
       "http://jakarta.apache.org/struts/dtds/tiles-config_1_1.dtd">


<!--
     This is a blank Tiles definition file with a commented example.
-->

<tiles-definitions>

    <definition name="aDef" path="/jsp/layout.jsp"> 
        <put name="header" value="/jsp/header.jsp"/> 
        <put name="footer" value="/jsp/footer.jsp"/> 
        <put name="body" value="/jsp/aBody.jsp"/> 
    </definition> 

    <definition name="bDef" path="/jsp/layout.jsp"> 
        <put name="header" value="/jsp/header.jsp"/> 
        <put name="footer" value="/jsp/footer.jsp"/> 
        <put name="body" value="/jsp/bBody.jsp"/> 
    </definition> 

</tiles-definitions>
e em struts-config.xml setei apenas as seguintes actions, nem mais nem menos:
<action-mappings>
	<action path="/a" type="org.apache.struts.actions.ForwardAction" parameter="aDef"/>
	<action path="/b" type="org.apache.struts.actions.ForwardAction" parameter="bDef"/>
</action-mappings>

PROBLEMA:
Quando executo a minha aplicação, chamo a jsp ( inicio.jsp ), e ela me traz os respectivos links (A e B).
Quando eu clico em qualquer um dos links ( tanto A quanto B ) ela me traz a tela montada direitinho a partir do tiles, porém só me mostra na tela
aBody.jsp.
Eu preciso que ao clicar no link "B" a partir da jps ( inicio.jsp ) ela me traga bBody.jsp onde a mesma possui uma definition setada na tiles-def.xml.
O que pode ser este problema!???
obs.: Os arquivos xmls e os jars estão no diretorio correto p/ funcionamento:

/WEB-INF/*.xml
/WEB-INF/lib/*.jar

Grato pessoal.

4 Respostas

black_fire

Kra,

Faz tempo que não faço estas configurações, mas tenta assim e vê se funciona, se não funcionar dá um alô que eu faço um testinho aki:

Um abraço velhinho... :wink:

Tiles
&lt;tiles-definitions&gt;
    &lt;definition name=".mainDef" path="/jsp/layout.jsp"&gt; 
        &lt;put name="header" value="/jsp/header.jsp"/&gt; 
        &lt;put name="footer" value="/jsp/footer.jsp"/&gt; 
        &lt;put name="body" value="${body}"/&gt; 
    &lt;/definition&gt; 

    &lt;definition name=".aDef" extends=".mainDef"&gt;
        &lt;put name="body" value="/jsp/aBody.jsp"/&gt;
    &lt;/definition&gt;

    &lt;definition name=".bDef" extends=".mainDef"&gt;
        &lt;put name="body" value="/jsp/bBody.jsp"/&gt;
    &lt;/definition&gt;
&lt;/tiles-definitions&gt;
Struts
&lt;action-mappings&gt;
	&lt;action path="/a" type="org.apache.struts.actions.ForwardAction" parameter=".aDef"/&gt;
	&lt;action path="/b" type="org.apache.struts.actions.ForwardAction" parameter=".bDef"/&gt;
&lt;/action-mappings&gt;
P

Kra.
Eu fiz o teste, e ainda continua dando o mesmo PROBLEMA!!
Eu preciso configurar algo no struts-config.xml!?
Vc pode fazer um teste??
Se funcionar, poderia postar novamente!?
Grato.

C

Olá

Tente no arquivo inicio.jsp, use action em vez de page:

<html:link action=“Objeto”>Objeto</html:link>

Até mais.
Fabrício Luis

C

Olá,

Melhor respondendo. :wink:

&lt;%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %&gt;
&lt;html:link action="a"&gt;A&lt;/html:link&gt;
&lt;html:link action="b"&gt;B&lt;/html:link&gt;

Espero tê-lo ajudado.

Até mais.
Fabrício Luis

Criado 3 de dezembro de 2004
Ultima resposta 4 de dez. de 2004
Respostas 4
Participantes 3