não consigo recuperar a varial conforme exemplo abaixo
@Path("/{page:[^about|terms|contact]}")
public void index(String page) {
System.out.println(page);
}
algo errado?
não consigo recuperar a varial conforme exemplo abaixo
@Path("/{page:[^about|terms|contact]}")
public void index(String page) {
System.out.println(page);
}
algo errado?
a sua regex está errada…
o que vc quer é que seja uma dessas três palavras né?
o certo seria:
@Path("/{page:about|terms|contact}")
não, gostaria que pegar qualquer coisa que nao esteja na lista por isso da lista negada [^terms|contact]. Pois quero que quando chame /terms ou /contact va para os seus respectivos controllers em vez de entrar neste método. Porém não estou conseguindo recuperar o valor no método.
Chega ate a entrar no método mais não mostra nada na variavel.
no controller do terms tem:
@Path("/terms")
public void index() {
//to do
}
vc pode fazer isso então:
@Path(value="/{page}", priority=Integer.MAX_VALUE)
daí as rotas específicas vão ter mais prioridade…
fiz conforme você disse mais não funcionou…segue:
@Resource
public class IndexController {
private final Result result;
public IndexController(Result result) {
this.result = result;
}
@Path("/")
public void index() {
result.include("variable", "VRaptor");
}
@Path(value = "/{login}", priority = Integer.MIN_VALUE)
public void index(String login) {
result.include("variable", login);
}
}
@Resource
public class ContactController {
private final Result result;
public ContactController(Result result) {
this.result = result;
}
@Path(value = "/contact", priority = Integer.MAX_VALUE)
public void index() {
}
}
porém entra somente no método da IndexController.
como o vraptor aceita expressão regular gostaria de no método do IndexController fazer uma regra que aceitasse qualquer valor que não esteja na lista
ex: [^contact|terms|about] e fazer os respectivos controllers para contact, terms, about com as regras /contact, /terms, /about.
na verdade vc entendeu o contrário…
qto maior o valor da prioridade, menos prioridade ele tem, ou seja, ele vai ser testado por último…
então o que vc tem que fazer é só colocar prioridade no /{login} e deixar todo o resto com prioridade padrão:
@Path(value="/{login}", priority=Integer.MAX_VALUE)
public void index(String login) { ... }
//....
@Path("/contact")
public void index() { ... }
deu certo aqui…valeu lucas