Передача действия bean-компонента в файл тегов Facelet

В моем проекте JSF 1.2 я создал файл тега facelet и определил inputText с атрибутом actionListener, которому нужно передать имя метода вспомогательного компонента. Я попытался определить переменную actionListener="#{actionListener}" в файле тегов. В моем xhtml, где я вызываю компонент, когда я передаю значение как

actionListener="#{myBean.preFillData}"

файл тегов обрабатывает его как свойство и выдает ошибки, указывающие, что свойство 'preFillData' не найдено. Если я изменю это на

actionListener="#{myBean.preFillData()}"

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

Как мы передаем имя метода в файл тега?

Спасибо PT

1 ответ

Решение

Передача выражений метода не поддерживается в файлах тегов. Только с JSF 2.0 это возможно с так называемыми композитными компонентами.

Что вы можете сделать, это разделить ссылку на bean-компонент и имя метода, чтобы вы могли использовать скобки для вызова метода. Я только не уверен, что это работает для actionListenerвы обычно не используете это для вызова действий, но это определенно должно работать для action,

Например

<my:tag ... bean="#{myBean}" actionMethod="preFillData" />

с внутри tag.xhtml

<h:commandButton ... action="#{bean[actionMethod]}" />

Только если вам случится использовать JSF 2.0 на Facelets, вы можете использовать <o:methodParam> передать выражение метода в файл тега. См. Также Динамический интерфейс включения и CommandButton.

Другие вопросы по тегам