Olá pessoal estou tnetando integrar o vraptor3 com tiles seguindo os passos do "vraptor3cookbook" mas não estou consegundo.
A aplicação sempre me retorna um erro 404 quando acesso a url http://localhost:8080/vraptor-teste/candidato/mostraPesquisa,
bom... não sei o que estou fazendo de errado, se alguem puder me ajudar agradeço muito.
Seguem minhas configurações:
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>vraptor-teste</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<!-- arquivo de definições do tiles -->
<context-param>
<param-name>org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG</param-name>
<param-value>/WEB-INF/classes/tiles.xml</param-value>
</context-param>
<!-- servlet de inicialização do tiles -->
<servlet>
<servlet-name>TilesServlet</servlet-name>
<servlet-class>org.apache.tiles.web.startup.TilesServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<!-- servlet que responde as requisições do tiles -->
<servlet>
<servlet-name>TilesDispatchServlet</servlet-name>
<servlet-class>org.apache.tiles.web.util.TilesDispatchServlet</servlet-class>
</servlet>
<!-- o tiles responderá por toda requisição *.tiles -->
<servlet-mapping>
<servlet-name>TilesDispatchServlet</servlet-name>
<url-pattern>*.tiles</url-pattern>
</servlet-mapping>
<context-param>
<param-name>br.com.caelum.vraptor.packages</param-name>
<!-- Change this parameter to your app base package -->
<param-value>br.ceuma.teste</param-value>
</context-param>
<filter>
<filter-name>vraptor</filter-name>
<filter-class>br.com.caelum.vraptor.VRaptor</filter-class>
</filter>
<filter-mapping>
<filter-name>vraptor</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
</web-app>
@Component
public class TilesPathResolver implements PathResolver {
private static final String VIEW_SUFIX = ".tiles";
private static final String CLASS_SUFIX = "Controller";
@Override
public String pathFor(ResourceMethod method) {
final Class<?> clazz = method.getResource().getType();
String pkgname = clazz.getPackage().getName();
final StringBuilder s = new StringBuilder();
s.append("/");
// retorna apenas o nome do último pacote
s.append(pkgname.substring(pkgname.lastIndexOf(".") + 1));
s.append(".");
//remove o sufixo controller
s.append(clazz.getSimpleName().substring(0, clazz.getSimpleName().indexOf(CLASS_SUFIX)));
s.append(".");
s.append(method.getMethod().getName());
s.append(VIEW_SUFIX);
// definições do tile em minusculo, mas você pode alterar isso
return s.toString().toLowerCase();
}
}
@Resource
public class candidatoController {
public void mostraPesquisa(){
}
}
<tiles-definitions>
<definition name="base" template="/WEB-INF/default.jsp">
<put name="corpo" value=""></put>
</definition>
<definition name="teste.candidato.mostrapesquisa" extends="base" >
<put name="corpo" value="/WEB-INF/candidato/mostraPesquisa.jsp"></put>
</definition>
</tiles-definitions>
erro retornado pelo browser:
HTTP Status 404 - /vraptor-teste/teste.candidato.mostrapesquisa.tilestype Status report
message /vraptor-teste/teste.candidato.mostrapesquisa.tiles
description The requested resource (/vraptor-teste/teste.candidato.mostrapesquisa.tiles) is not available.