Передача действия 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.