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.
Convenção do VRpator 3
4 Respostas
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
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í ?
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
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.