Почему EL дает мне неправильный объект в качестве параметра между круглыми скобками? - PullRequest
1 голос
/ 15 мая 2009

Вот ситуация:

В таблице rich: dataTable в форме a4j: я создаю a4j: commandLink, чтобы выбрать значения и передать его компоненту с синтаксисом действия jboss el

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

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

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

Есть идеи?

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

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

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

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

Ответы [ 4 ]

2 голосов
/ 15 мая 2009

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

action="#{bean.myaction$[myparameter].action}"
2 голосов
/ 15 мая 2009

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

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

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

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

0 голосов
/ 29 октября 2013

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

0 голосов
/ 15 мая 2009

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

например.

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