--- title: Integrando o VRaptor com Tiles 3 --- # Integrando o VRaptor com Tiles 3 ## por Otávio Garcia Apache Tiles é um framework que implementa o design pattern Composite View. Com ele é possível você criar templates para sua aplicação de forma bem simples. Mais informações você encontrará no site do projeto. O primeiro passo é incluir em seu projeto Maven o artefato abaixo. Se você não usa Maven, você pode ir no site do Tiles e baixar os arquivos manualmente. ~~~ #!xml org.apache.tiles tiles-extras 3.0.0 ~~~ E depois adicionar o listener que informa ao tiles que a aplicação está inicializada: ~~~ #!xml org.apache.tiles.extras.complete.CompleteAutoloadTilesListener ~~~ E por último o servlet que irá responder às requisições do Tiles. No exemplo abaixo, qualquer requisição para a URL `*.tiles` será direcionada para os templates do Tiles. ~~~ #!xml TilesDispatchServlet org.apache.tiles.web.util.TilesDispatchServlet TilesDispatchServlet *.tiles ~~~ Desta forma já temos o Tiles atendendo as requisições. Por padrão o VRaptor faz o forward para JSPs. Então precisaremos sobrescrever o comportamento da classe `DefaultPathResolver` para fazer o forward para o Tiles, usando o Servlet que criamos anteriormente. ~~~ #!java @Specializes public class TilesPathResolver extends DefaultPathResolver { @Inject protected TilesPathResolver(FormatResolver resolver) { super(resolver); } @Override protected String getPrefix() { return "/"; } @Override protected String getExtension() { return "tiles"; } } ~~~ Com isso, se você requisitar o método `ClienteController.formulario`, o VRaptor irá efetuar o forward para o template `cliente.formulario`. Basta então criarmos o template para atender ao `forward` no arquivo `/WEB-INF/tiles.xml`: ~~~ #!xml [...] ~~~ O Tiles possui uma versão mais antiga do Javassist como dependência, o que pode causar conflitos com a versão utilizada pelo VRaptor. Para resolver, basta excluir essa dependência como no exemplo a seguir: ~~~ #!xml org.apache.tiles tiles-extras 3.0.0 javassist jboss ~~~