- SiteMesh
- Tiles
no caso como anteriormente tive boas experiências no uso do Tiles junto com o Struts 1, resolvi verificar como está o uso entre Struts 2 com a nova versão do Tiles 2...
um pequeno problema...
opa calma, deixa eu explica, o problema que tive inicialmente foi encontrar uma fonte que realmente contivesse a informação de como realizar a integração entre ambos, a qual fui achar somente em um forum da França, no respectivo [link]
[web.xml] configurando a aplicação para utilizar Struts 2 com Tiles 2
( necessário dos jar´s do Struts 2 e do Tiles 2 [usei o 2.0.3, core e api] na lib da aplicação )
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_Struts_Tiles" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Struts 2 Tiles 2 - Example</display-name>
<!-- ======= -->
<filter>
<filter-name>struts</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<!-- ======= -->
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- ======= -->
<listener>
<listener-class>org.apache.tiles.listener.TilesListener</listener-class>
</listener>
<!-- ======= -->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
WEB-INF/[tiles.xml] configuração referente ao layout/templates
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
"http://struts.apache.org/dtds/tiles-config_2_0.dtd">
<tiles-definitions>
<!-- definição do layout da página principal -->
<definition name="template.page" template="/template/layout.jsp">
<put name="title" value="Struts 2 + Tiles 2"/>
<put name="header" value="/template/headerMain.jsp"/>
<put name="menu" value="/template/menuMain.jsp"/>
<put name="footer" value="/template/footerMain.jsp" />
</definition>
<definition name="welcome.page" extends="template.page">
<put name="body" value="/jsp/welcome.jsp"/>
</definition>
</tiles-definitions>
ps.: nessa aplicação defini os respectivos diretório no root da aplicação:
- jsp : para os jsp´s de resultado das action
- template : para os layout de tela a ser setados no Tiles
/template/[layout.jsp] layout da tela
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%-- atributo da request --%>
<tiles:importAttribute name="title" scope="request"/>
<%-- definição do layout --%>
<html>
<head>
<!-- recupera o atributo setado na definição do tiles.xml -->
<title><tiles:getAsString name="title"/></title>
</head>
<body>
<table width="100%" height="100%">
<tr bgcolor="yellow">
<td colspan="2">
<tiles:insertAttribute name="header" />
</td>
</tr>
<tr>
<td bgcolor="gray">
<tiles:insertAttribute name="menu" />
</td>
<td>
<tiles:insertAttribute name="body" />
</td>
</tr>
<tr bgcolor="yellow">
<td colspan="2">
<tiles:insertAttribute name="footer" />
</td>
</tr>
</table>
</body>
</html>
ps.: os outros .jsp dentro do diretório possui nesse exemplo apenas textos, indicando : [ cabeçalho, meno e rodapé ]
usando como tipo de retorno de uma action, a definição da action deverá conter o seguinte formato:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="base" extends="struts-default">
<result-types>
<result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" />
</result-types>
<action name="index">
<result type="tiles">welcome.page</result>
</action>
</package>
</struts>
e com essas dicas já é possível iniciar o uso do Struts 2 integrado com Tiles 2 =]