Subpastas no Vraptor

2 respostas
rodrigodsw2005

Pessoal, gostaria de saber como que fica o controller do vraptor quando criamos subpastas WEB-INF/jsp. Por exemplo:

WEB-INF -> jsp -> cadastro -> motorista -> index.jsp
@Resource
public class MotoristaController {

    private final Result result;

    public MotoristaController(Result result) {
        this.result = result;
    }

    @Path("/")
    public void index() {
        result.include("variable", "VRaptor!");
    }
}

Isso aí em cima está correto? Porque esta dando o seguinte erro: Perceba que a pasta 'cadastro' nao está na URL.

HTTP Status 404 - /vraptor-blank-project-3.1/WEB-INF/jsp/motorista/index.jsp

2 Respostas

G

O padrão do vraptor é usar WEB-INF/jsp/NOME_DO_CONTROLLER/METODO.jsp. Isso que você quer não tem como fazer a menos que você sobrescreva o comportamento padrão do vraptor.

Crie uma classe como o exemplo abaixo. Nesse caso eu uso JSPX e também uso o diretório conforme o package da classe. Note que o forward para JSP será baseado em WEB-INF/jspx/PACKAGE_NAME/NOME_DO_CONTROLLER/METODO.jspx. Você deve alterar de JSPX para JSP e também adaptar conforme seu projeto.

Basta largar isso em qualquer lugar das suas classes que o vraptor já faz o scan da classe.

@Component
public class JspxPathResolver
    implements PathResolver {

    @Override
    public String pathFor(ResourceMethod method) {
        final Class<?> clazz = method.getResource().getType();
        final String clazzName = clazz.getSimpleName();
        final Package pkg = clazz.getPackage();

        final StringBuilder s = new StringBuilder();
        s.append("/WEB-INF/jspx/");
        s.append(StringUtils.substringAfterLast(pkg.getName(), "."));
        s.append("/");
        s.append(StringUtils.substringBefore(clazzName, "Controller").toLowerCase());
        s.append(".");
        s.append(method.getMethod().getName().toLowerCase());
        s.append(".jspx");

        return s.toString();
    }
}
Lucas_Cavalcanti

é o que garcia falou, só não precisa ser jspx :wink:

Criado 13 de abril de 2010
Ultima resposta 13 de abr. de 2010
Respostas 2
Participantes 3