Fórum JSF + PrimeFaces #420739
30/07/2012
0
Estou utilizando JSF com a biblioteca do Primefaces... Preciso chamar um método através de EL... O problema é que em um momento consigo chamar o método através da EL #{perfilBean.renderizar} e em outro momento preciso chamar utilizando a EL #{perfilBean.renderizar()}. Então minha dúvida é, o porque as vezes ele aceita sem os () especificando que é um método e as vezes não... oO
Exemplo Funcionando:
XHTML
<h:selectOneRadio value=#{perfilBean.perfil} >
<p:ajax listener=#{perfilBean.redirecionar} />
<f:selectItem itemValue=paciente itemLabel=Paciente />
<f:selectItem itemValue=secretaria itemLabel=Secreária(o) />
<f:selectItem itemValue=nutricionista itemLabel=Nutricionista />
<f:selectItem itemValue=labExames itemLabel=Laboratório de Exames />
</h:selectOneRadio>
/*Método para redirecionar*/
public void redirecionar() {
try {
if (perfil.equals(paciente)) {
FacesContext.getCurrentInstance().getExternalContext().redirect(/Nutrisis/cdPaciente.jsf);
} else if (perfil.equals(secretaria)) {
FacesContext.getCurrentInstance().getExternalContext().redirect(/Nutrisis/cdSecretaria.jsf);
} else if (perfil.equals(nutricionista)) {
FacesContext.getCurrentInstance().getExternalContext().redirect(/Nutrisis/cdNutricionista.jsf);
} else {
FacesContext.getCurrentInstance().getExternalContext().redirect(/Nutrisis/cdLabExames.jsf);
}
} catch (IOException ex) {
Logger.getLogger(PerfilBean.class.getName()).log(Level.SEVERE, null, ex);
}
}
O exemplo abaixo segue exatamente a mesma lógica, mas não funciona. Minha intenção era deixar de ter uma página para cada tipo de perfil e tê-los todos na mesma página, porém renderizando o fildset em questão, apenas quando for selecionado o perfil desejado.
<h:selectOneRadio value=#{perfilBean.perfil} >
<p:ajax listener=#{perfilBean.renderizar} /> <!-- Método modificado para renderizar -->
<f:selectItem itemValue=paciente itemLabel=Paciente />
<f:selectItem itemValue=secretaria itemLabel=Secreária(o) />
<f:selectItem itemValue=nutricionista itemLabel=Nutricionista />
<f:selectItem itemValue=labExames itemLabel=Laboratório de Exames />
</h:selectOneRadio>
<p:fieldset legend=Paciente toggleable=true id=paciente
rendered=#{perfilBean.renderizar} > <!-- Erro informando que a propriedade renderizar não foi
localizada -->
<p:fieldset legend=Paciente toggleable=true id=paciente
rendered=#{perfilBean.renderizar()} > <!-- Carrega página para seleção do perfil, porém ao
selecionar o perfil não renderiza o componente -->
/*Método para renderizar*/
public Boolean renderizar() {
if (perfil.equals(paciente))
return true;
return false;
}
Outro detalhe é que se já deixar o radiobox paciente selecionar por default, ai ele renderiza o componente.
Teste
Curtir tópico
+ 0Posts
31/07/2012
Davi Costa
listener aceitar seu método,
já rendered talvez espere um getter e setter tipo getMetodo.
Propriedade de objeto (como campos de entrada) lidam melhor com getters e setters. Já ações de botões e ajax não há essa necessidade
att Davi
Gostei + 0
08/08/2012
Robson Teixeira
o JSF tenta procurar na sua managedBean o método getRenderizar() ou isRenderizar(), mas quando você declara
#{perfilBean.renderizar()} o mesmo procura o método renderizar() que deve está declarado em sua ManagedBean.
att
robson
Gostei + 0
08/08/2012
Teste
Tinha esquecido (na verdade não sabia mesmo) de colocar o update no ajax... Então utilizei update=@form, no ajax e resolveu o problema...
Agradeço a ajuda de todos...
Gostei + 0
08/08/2012
Davi Costa
Sucesso.
att Davi
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)