Bem estou com o seguinte problema, tenho 1 menu que terá o valor de sua action modificada dinâmicamente, pergunto aos senhores, pois nas minhas tentativas de pegar o valor da action (método da classe) que será chamado diretamente do banco de dados: ou seja, terei 1 objeto que terá um campo acao, esse campo terá o valor de 1 EL ex:
<ui:repeatvar="menu"value="#{menuControl.listFuncionalidadesPai}"><li><p:commandLinkrendered="#{menu.identificadorStatus == 'A' and menu.idAgr == 'N'}"[b]action="#{menu.acao}"[/b]process="@this"immediate="true"><i></i><h:outputTextvalue="#{menu.nmFun}"/></p:commandLink></li></ui:repeat>
O valor do campo acao seria : #{menuControl.principal()} = Método que preciso que seja chamado.
Porém o jsf entende que o acao seria o método a ser usuado pela classe, com isso pergunto alguem sabe dizer se é possível utilizar as actions dessa forma?
De que forma? O valor que você define na action é o método que você quer que seja invocado no ManagedBean
I
IgorDutra
Assim rodrigo, acredito que não fui claro… no código acima tenho minha action: action="#{menu.acao}", porém o atributo acao tem o seguint valor “principal()”, eu pensei que o jsf iria interpretar da seguinte maneira:
<p:commandLinkrendered="#{menu.identificadorStatus == 'A' and menu.idAgr == 'N'}"[b]action="#{menu.principal()}"[/b]process="@this"immediate="true">//Comoacheiqueojsfiriainterpretar
Porém ele está interpretando ainda da seguinte forma, pois ele intende que o EL #{menu.acao} é 1 chamada a método e não um valor.
Vamos lá. Se você define o atributo com uma EL, ele irá interpretar como se fosse o nome de um método, assim:action="#{meuBean.nomeDoMetodo}"Agora se colocar a String diretamente, ele interpreta como valor action="paginaQueQueroIr"Qual desses dois você está tentando fazer? Lembrando que não tem nenhum problema em o método invocado retornar esse valor. Assim:public String nomeDoMetodo(){
return "paginaQueQueroIr";
}
I
IgorDutra
Rodrigo Sasaki:
Vamos lá. Se você define o atributo com uma EL, ele irá interpretar como se fosse o nome de um método, assim:action="#{meuBean.nomeDoMetodo}"Agora se colocar a String diretamente, ele interpreta como valor action="paginaQueQueroIr"Qual desses dois você está tentando fazer? Lembrando que não tem nenhum problema em o método invocado retornar esse valor. Assim:public String nomeDoMetodo(){
return "paginaQueQueroIr";
}
Rodrigo, estou passando o método como valor, como disse no action="#{menu.acao}" o acao é substituido pelo nome dos métodos, que estão cadastrados na base de dados.
Ou seja, no meu action eu chamo uma string e não um método.
Rodrigo_Sasaki
Você não vai conseguir fazer ele substituir o valor da EL, o máximo que você pode fazer é invocar o método dentro do método acao mesmo.