Jsf динамически создаваемый параметр actionListener - PullRequest
1 голос
/ 22 февраля 2011

У меня есть пользовательский компонент Facelet (пользовательский тег), но есть одна вещь, которая меня сейчас сильно раздражает. Я пытаюсь передать слушатель действия в качестве параметра пользовательскому тегу, чтобы сделать его более динамичным и просто не работает.

Среда: JSF 1.2, IceFaces 1.8

Вот способ, которым я пытаюсь достичь этого:

  • командная ссылка использует переданный параметр 'paginationController'

    <h:commandLink id="#{id}-link-three" value="click"
        actionListener="#{paginationController.paginationLinkClicked}" />
    
  • параметр 'paginationController' передается следующим образом:

    paginationController="rowSelectController"
    
  • когда я нажимаю на ссылку, я получаю следующее:

    Received 'javax.el.MethodNotFoundException' when invoking action listener
    '#{paginationController.paginationLinkClicked}' for component 'entity-list-apps-link-three'
    2011-02-22 12:49:47,803 SEVERE [javax.faces.event] (http-127.0.0.1-8080-4)
    javax.el.MethodNotFoundException: /WEB-INF/jsf/common/components/facelets
    /applicationList.xhtml @107,71 actionListener="#{paginationController.paginationLinkClicked}":
    Method not found: rowSelectController.paginationLinkClicked(javax.faces.event.ActionEvent)
    

Похоже, что он успешно разрешает имя компонента в rowSelectController, но жалуется, что не может найти метод, и метод существует!

Еще одна вещь, если я заменю параметр на правильное имя контроллера, он просто работает! Есть идеи?

1 Ответ

0 голосов
/ 22 февраля 2011

Поскольку paginationController является переменной, вам необходимо использовать здесь синтаксис []. Предполагая, paginationLinkClicked является фиксированным именем метода:

<h:commandLink actionListener="#{paginationController['paginationLinkClicked']}" />

Если paginationLinkClicked также будет переменной, вы должны опустить одинарные кавычки:

<h:commandLink actionListener="#{paginationController[paginationLinkClicked]}" />
...