Convenção do VRpator 3

4 respostas
S

Estou vendo alguns tutoriais sobre vraptor, e me deparei com a seguinte dúvida.
Como altero esse caminho /WEB-INF/jsp/produtos/manter, onde é feita essa configuração que não consegui localizar.
Ex:
/WEB-INF/cadastro/usuario.jsp, é nessa configuração que estou me batendo um pouco.

4 Respostas

Lucas_Cavalcanti

Olá santos.fernando,

antes de mais nada: pq vc quer alterar a convenção?

a documentação sobre isso está aqui:
http://vraptor.caelum.com.br/documentacao/configuracoes-avancadas-sobrescrevendo-as-convencoes-e-comportamento-do-vraptor/

Abraços

S

Obrigado Lucas pela ajuda e é mais a nível de curiosidade.
Então esse caminho /WEB-INF/jsp/ é padrão, e todos meus jsp’s ficam aí ?

Lucas_Cavalcanti

sim, é esse o padrão… e vc deve colocar os jsps aí, seguindo a convenção:

@Resource
public class ContatoController {
     public void lista() {...}
}

vai automaticamente para:

/WEB-INF/jsp/contato/lista.jsp
G

Esse é o padrão do Vraptor. Mas nada impede de você sobrescrever o Vraptor para sua própria convenção. No meu caso eu precisei usar JSPX ou invés de JSP. Então fiz o seguinte componente que implementa ViewResolver.

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import br.com.caelum.vraptor.ioc.Component;
import br.com.caelum.vraptor.resource.ResourceMethod;
import br.com.caelum.vraptor.view.PathResolver;

@Component
public class JspxPathResolver
    implements PathResolver {

    static final Logger logger = LoggerFactory.getLogger(JspxPathResolver.class);

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

        final StringBuilder s = new StringBuilder(40);
        s.append("/WEB-INF/jspx/");

        s.append(clazzName.substring(0, clazzName.indexOf("Controller")).toLowerCase());
        s.append(".");
        s.append(method.getMethod().getName().toLowerCase());
        s.append(".jspx");

        final String out = s.toString();
        logger.debug("forwarding to {}", out);

        return out;
    }
}

Note que o Vraptor possui seus padrões, mas você pode sobrescrever as classes dele alterando esses comportamentos.

Criado 9 de agosto de 2010
Ultima resposta 10 de ago. de 2010
Respostas 4
Participantes 3