Вопрос по facelets, jsf, jsf-1.2, action, tagfile – Передача вспомогательного действия bean-компонента в файл тега Facelet

4

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

<code>actionListener="#{myBean.preFillData}"
</code>

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

<code>actionListener="#{myBean.preFillData()}"
</code>

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

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

Спасибо PT

Ваш Ответ

1   ответ
4

ле 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.

@BalusC в этом примере, что еслиbean или жеactionMethod не имеют значений - нулевые значения? Есть ли способ проанализировать это на стороне клиента?
Ах, это имеет смысл. Но почему тогда вы не объявляете это непосредственно в файле тегов? Кажется, можно использовать повторноActionListener реализация, которая не обязательно должна ссылаться на метод бина.
Спасибо @Balusc. Полезно знать ограничение JSF 1.2 и одну причину для обновления :) phewataal
Что касается вашего комментария к actionListener, который обычно не используется для вызова действий, у меня есть случай, когда 2 текстовых поля & apos; Значение (почтовый индекс и расширение) необходимо объединить в одно свойство в моем доменном объекте перед вызовом сохранить как мое действие. Должна ли эта консолидация также выполняться в методе действия вместо actionListener? phewataal
Мне жаль, что я не получил вас, когда вы сказали "почему вы не объявляете это непосредственно в файле тегов, а затем & quot;". Можете ли вы уточнить? phewataal

Похожие вопросы