2009-05-15 5 views
1

Вот ситуация:Почему EL дает мне неправильный объект в качестве параметра между скобками?

В богатом: DataTable в качестве a4j: форма, я создать a4j: commandLink для выбора значения и передать его в фасоли с JBoss-эль-синтаксисом действия

action="#{bean.myaction(myparameter)}" 

Это работает без проблем.

Но если я повторно визуализую форму для фильтрации данных с помощью вызова ajax, когда я выбираю значение, это дает мне неправильные результаты: индекс из выделения, но данные перед фильтрацией.

Любые идеи?

Спасибо Зак за то, что вы дали мне правильное решение всего за 5 минут.

Я думаю, что проходящий параметр в действии между скобками более изящный, но, эй: это работает. :)

Большое спасибо.

P.s. Я тоже редактирую заголовок.

ответ

2

Попробуйте использовать:

<a4j:commandLink action="#{bean.myaction}"> 
    <f:param name="myparameter" value="paramValue" /> 
</a4j:commandLink> 

, а затем получить доступ к этому параметру в своем действии через requestParameter("myparameter") через FacesContext.

В качестве побочного примечания это не jboss EL, это единый язык выражения (EL). Это просто особенность JSP/JSF в целом, как указано Sun.

2

В дополнение к ответу на Зака, я бы сказал, что, если вам необходимо расширить выражения EL для того, чтобы иметь возможность вызывать метод с параметрами, вы можете использовать EL Functors библиотеку:

action="#{bean.myaction$[myparameter].action}" 
+0

Он использует JBoss EL. Вы можете сделать # {bean.myaction (myparameter)} просто отлично. – Damo

+0

Хорошо, спасибо за информацию (я никогда не использовал JBoss EL). – romaintaz

0

Is ваш заполненный datatable с помощью Collection, аннотированный с помощью @DataModel? Если это так, попробуйте удалить его из контекста при фильтрации, чтобы он был запрошен повторно.

например.

//In filter method 
Contexts.removeFromAllContexts("yourDataModelCollection"); 
+0

Спасибо, но я не использую datamodel. Я использую структуру запросов сущности. –

0

Ввод DataTable в <a4j:region> работал для меня. Таким образом, вы все равно можете использовать параметры JBoss EL.