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

StackOverflow https://stackoverflow.com/questions/868916

Вопрос

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

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

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

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

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

Есть идеи?

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

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

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

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

Это было полезно?

Решение

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

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

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

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

Другие советы

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

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

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

например.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top