Por EL me dá o objeto errado, como parâmetro entre parênteses?
Pergunta
Aqui está a situação:
Em um rico: dataTable em uma a4j: forma, eu criar um a4j: commandLink para selecionar os valores e passá-lo para o feijão com o el ação jboss sintaxe
action="#{bean.myaction(myparameter)}"
Isso funciona sem problema.
Mas se eu voltar a tornar a forma de filtrar a tabela de dados com uma chamada ajax, quando eu selecionar o valor, ele me dá os resultados errados:. O índice a partir da seleção, mas os dados de antes da filtragem
Todas as idéias?
Obrigado Zack por me dar a solução certa em apenas 5 minutos.
Eu acho que passar parâmetro na ação entre parênteses é mais elegante, mas, hey: isso funciona. :)
Obrigado muito.
P.S. Estou editando o título também.
Solução
Tente usar:
<a4j:commandLink action="#{bean.myaction}">
<f:param name="myparameter" value="paramValue" />
</a4j:commandLink>
e, em seguida, acesso esse parâmetro em sua ação através da requestParameter("myparameter")
através do FacesContext
.
Como uma nota lateral, esta é linguagem de expressão não jboss EL, é unificado (EL). É apenas uma característica do JSP / JSF em geral, conforme especificado pelo dom
Outras dicas
Além de resposta do Zack, eu diria que, se você precisa estender as expressões EL, a fim de ter a capacidade de chamada de método com parâmetros, você pode usar o El Functores biblioteca:
action="#{bean.myaction$[myparameter].action}"
é sua tabela de dados preenchida usando uma coleção anotada com @DataModel? Se assim for tente removê-lo a partir do contexto ao filtrar para que ele seja re-solicitado.
por exemplo.
//In filter method
Contexts.removeFromAllContexts("yourDataModelCollection");
Colocar o dataTable em um <a4j:region>
funcionou para mim. Dessa forma, você ainda pode usar parâmetros JBoss EL.