JSF - Altere a ação para AH: CommandButton (2.0)
Pergunta
Sou novo no JSF 2.0. Na última versão, entendo que, se quero alterar regras sobre "o que enviar para o cliente", só preciso configurar o faces-config.xml.
Agora, na versão 2.0, como gerenciar a ação? Por exemplo, se eu tiver isso em um index.xhtml
<h:commandButton id="submit" value="submit" action="response" />
E preciso ligar para uma página chamada Response.html (não xhtml) ou aquela página colocada em /então /ponsonse.html, ou algo mais? Como pode fazer isso? Eu sei que o JSF 2.0 é muito flexível sobre essas coisas (o conceito de links href é derrotado). Então, acho que posso gerenciar isso com outras metodologias, certo?
Solução
o action
pode apontar duas coisas:
Uma expressão de método
action="#{bean.methodname}"
Onde o método é assim:@ManagedBean @RequestScoped public class Bean { public String methodname() { // Do some business task here. return "response"; } }
Depois de executar o método, a ação acabará contendo efetivamente o valor de retorno do método, assim:
action="response"
.Você também pode controlar o resultado "dinamicamente" da maneira usual java:
public String methodname() { if (someCondition) { return "somepage"; } else { return "anotherpage"; } }
Dependendo do resultado da condição, a ação acabará como
action="somepage"
ouaction="anotherpage"
Outra página xhtml no mesmo Pasta como a página atual XHTML. Você só precisa especificar o nome do arquivo:
action="response"
.
De qualquer maneira, ele irá para a página xhtml que é composta por outcome + ".xhtml"
Onde outcome
é o valor da ação (por exemplo response.xhtml
, somepage.xhtml
ou anotherpage.xhtml
) que deve estar na mesma pasta que o arquivo xhtml contendo o h:commandButton
.
Você não precisa configurar nada em faces-config.xml
por esta. Anteriormente, durante o JSF 1.x idades, você precisaria definir <navigation-case>
por esta.
Veja também:
- Não precisamos não fedindo faces-fonfig.xml! - Blog do Lead Mojarra Developer.