Estou contextualizando com VRaptor, venho do JSF 2.0 e a parte de servidor está tranquilo.
A dúvida é sobre as views, no jsf eu criava um template onde continha o menu e parte superior e rodapé, além disso, um fragmento de pagina como por ex. anuncios eu criava um componente xhtml e utilizava ele como uma tag dentro das paginas xhtml.
Alguém pode me indicar qual a melhor alternativa atualmente nos dois casos para as JSP com o VRaptor? Eu vi algo sobre Tiles mas não sei se é a melhor alternativa…
além do Tiles você pode dar uma olhada no sitemesh, que é mais fácil de configurar e manter.
depende muito do nível de camadas que você pretende ter nos seus layouts.
Resolvi utilizar o tiles, segue configuração para uso com VRaptor ainda estou testando mas por enquanto ta funcionando.
web.xml adicionar:
<context-param>
<param-name>
org.apache.tiles.definition.DefinitionsFactory.DEFINITIONS_CONFIG
</param-name>
<param-value>
/WEB-INF/tiles.xml
</param-value>
</context-param>
<servlet>
<servlet-name>TilesServlet</servlet-name>
<servlet-class>org.apache.tiles.web.startup.TilesServlet</servlet-class>
<init-param>
<param-name>org.apache.tiles.factory.TilesContainerFactory.MUTABLE</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
em WEB-INF criar um arquivo tiles.xml fazendo as alterações dos path das JSP :
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
"http://tiles.apache.org/dtds/tiles-config_2_0.dtd">
<tiles-definitions>
<!-- DEFINICAO SIMPLES ->
<definition name="homePage" template="/WEB-INF/jsp/tiles/template.jsp">
<put-attribute name="header" value="/WEB-INF/jsp/tiles/defaultHeader.jsp" />
<put-attribute name="menu" value="/WEB-INF/jsp/tiles/defaultMenu.jsp" />
<put-attribute name="body" value="/WEB-INF/jsp/tiles/home_body.jsp" />
<put-attribute name="footer" value="/WEB-INF/jsp/tiles/defaultFooter.jsp" />
</definition>
<!- END -->
<!-- DEFINICAO COM HERANCA -->
<definition name="commonPage" template="/WEB-INF/jsp/tiles/template.jsp">
<put-attribute name="header" value="/WEB-INF/jsp/tiles/defaultHeader.jsp" />
<put-attribute name="menu" value="/WEB-INF/jsp/tiles/defaultMenu.jsp" />
<put-attribute name="footer" value="/WEB-INF/jsp/tiles/defaultFooter.jsp" />
</definition>
<definition name="homePage" extends="commonPage">
<put-attribute name="body" value="/WEB-INF/jsp/tiles/home_body.jsp" />
</definition>
<!-- END -->
</tiles-definitions>
PAGINAS JSP :
template.jsp
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
<html>
<body style="width:100%;height:100%">
<table border="1" cellspacing="0" cellpadding="0" style="width:100%;height:100%">
<tr>
<td colspan="2">
<tiles:insertAttribute name="header" /></td>
</tr>
<tr>
<td>
<tiles:insertAttribute name="menu" /></td>
<td>
<tiles:insertAttribute name="body" /></td>
</tr>
<tr>
<td colspan="2">
<tiles:insertAttribute name="footer" /></td>
</tr>
</table>
</body>
</html>
defaultHeader.jsp:
<div>this is the default header</div>
defaultMenu.jsp:
<div>
<ul>
<li>Menu item 1</li>
<li>Menu item 2</li>
<li>Menu item 3</li>
<li>Menu item 4</li>
<li>Menu item 5</li>
<li>Menu item 6</li>
</ul>
</div>
defaultFooter.jsp:
<div>this is the default footer</div>
home_body.jsp:
<div id="header">
<h1>This is the home page's body</h1>
</div>
home.jsp:
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
<tiles:insertDefinition name="homePage" />
fonte: http://richardbarabe.wordpress.com/2009/02/17/apache-tiles-2-a-brief-example/