Como já leram aqui no blog, escolhi o Mentawai para desenvolver um projeto em Java. Mas, como nem tudo são flores, meses atrás eu tive um problema com a utilização de “template” no menta. Por acreditar que outras pessoas já passaram pelo mesmo problema, vou passar adiante uma dica que o felipowsky me passou lá no fórum.

Para conhecer como funciona o recurso de template, basta acessar o site aqui. O próprio site do mentawai explica passo a passo, portanto, não mostrarei aqui como criar um template simples.

O PROBLEMA

Quando se trabalha com “template” no mentawai é permitido configurar a extensão dos arquivos e a forma como serão acessados (Desde que não seja “jsp”, senão ele lança exceção).

Ao acessar uma página com a extensão que foi definida, o recurso de template do framework incluirá a página dentro das tags definidas. Porém, se o usuário renomear na barra de endereço a extensão, passando “.JSP”, o arquivo será acessado e exibido sem qualquer formatação de layout.


A SOLUÇÃO

Tentei de “n” maneiras resolver este problema, e como sou marinheiro de primeira viagem não tive muito sucesso.

A idéia passada pelo felipowsky foi a seguinte:

Cria-se uma classe que estende ConventionController, chame-a de CustomConventionController:

import org.mentawai.template.ConventionController;

public class CustomConventionController extends ConventionController {

@Override
public String getRoot() {
return "/WEB-INF/Administracao";
}
}

E, no TemplateManager, ao invés de chamar ConventionController, chama-se a classe customizada ConventionControllerCustom:

import org.mentawai.template.Page;

import com.mentawaiexe.template.CustomConventionController;

public class TemplateManager extends org.mentawai.template.TemplateManager {

private static final String WEBINF_FOLDER = "/WEB-INF/";
private static final String DEFAULT_JSP_FOLDER = WEBINF_FOLDER + "Administracao/";

public void configurePages() {
Page page = new Page("Administracao/.*", DEFAULT_JSP_FOLDER + "home.jsp",  CustomConventionController.class);
add(page);
}
}

Está foi a solução que utilizei no meu projeto, e funciona perfeitamente.

Valeu felipowsky!