2

<h:inputText>のようなイベントリスナーがあります。

<h:inputText valueChangeListener="#{myBean.handle}"/>

次のように使用されるタグファイルに入れたいと思います:

<my:itext changeListener="#{myBean.handle}" />

タグファイル内で:

<h:inputText valueChangeListener="#{changeListener}" />

ただし、リスナー メソッドとしてではなく、プロパティとして評価しています。リスナー メソッドをタグ ファイルに渡すにはどうすればよいですか?

4

1 に答える 1

2

設計上、メソッド式をタグ ファイル属性として渡すことはできません。基本的に、タグファイル内でを に変換ValueExpressionする必要があります。MethodExpression

JSF 2.x Facelets の場合、これはOmniFaces<o:methodParam>を使用して解決できます。

<o:methodParam name="changeListenerMethod" value="#{changeListener}" />
<h:inputText valueChangeListener="#{changeListenerMethod}" />

ただし、古い非推奨の Facelets 1.x または JSP 2.x には、既存のソリューションはありません。ただし、OmniFaces<o:methodParam>はオープン ソースであるため、必要に応じて Facelets 1.x または JSP 用にコピーおよび変更できるはずです。

実際にすでに JSF 2.x を使用している場合は、代わりに複合コンポーネントを使用することもできます。これにより、メソッド式を として渡すことがサポートされ<cc:attribute method-signature>ます。JSF 1.x の場合、代わりに実際のカスタム コンポーネントを作成することもできますが、それは単に XML を作成するよりも少し手間がかかります。

于 2012-06-21T15:30:07.010 に答える