複合コンポーネントを実装していますが、解決策が見つからない問題を見つけました。
ページ作成者が渡すことができるかどうかの属性を指定しましたが、メソッド属性 (Action へのメソッド式) を指定できませんでした。これが渡されない場合、複合コンポーネントはメソッド属性を使用しません。 composite:implementation タグで。
ここに私のコード:
<composite:interface>
<composite:attribute name="namePrompt" required="true"/>
<composite:attribute name="actionMethod" method-signature="java.lang.String action()" required="false"/>
<composite:attribute name="showComponent" default="false"/>
</composite:interface>
<composite:implementation>
<div>
<p:commandLink actionListener="#{cc.attrs.actionMethod}"
rendered="#{cc.attrs.showComponent}"
>
<h:outputText value="#{cc.attrs.namePrompt}"/>
</p:commandLink>
</div>
</composite:implementation>
それを使用するとき、「actionMethod」属性を指定しませんでした。このような:
<util:foo namePrompt="SomeName" showComponent="true"/>
しかし、エラーメッセージが表示されます:
javax.faces.FacesException: Unable to resolve composite component from using page using EL expression '#{cc.attrs.actionMethod}'
これを行う方法はありますか?