setPropertyActionListeners到复合组件

时间:2013-11-19 11:33:35

标签: jsf facelets actionlistener composite-component

我需要创建包含两个h:commandLinks的复合组件。我想从客户端代码传递f:setPropertyActionListeners,以应用于两个commandLinks。这有可能吗?我试图使用cc:insertChildren,但没有触发适当的setter。

<my:operationLink action="#{cc.attrs.bean.myAction}">
 <f:setPropertyActionListener for="<!-- whats here? -->" value="#{cc.attrs.someAttrOne}" target="#{cc.attrs.bean.someAttrTargetOne}"/>
 <f:setPropertyActionListener for="<!-- whats here? -->" value="#{cc.attrs.someAttrTwo}" target="#{cc.attrs.bean.someAttrTargetTwo}"/>

和我的组件:

<cc:implementation>
<h:commandLink id="textLink" value="myTextLink"><ui:insert/></h:commandLink>
<h:commandLink id="imgLink"><h:graphicImage url="/images/my.gif"/><ui:insert/></h:commandLink>

我需要将actionlisteners应用于两个链接(进入ui:insert)

1 个答案:

答案 0 :(得分:1)

您需要在复合界面中使用name中的“事件名称”声明<cc:actionSource>(例如actionEvent,这完全是您选择的)和客户端ID这些命令链接targets中分隔的空格。

<cc:interface>
    <cc:actionSource name="actionEvent" targets="textLink imgLink" />
</cc:interface>

然后你可以在客户端使用:

<f:setPropertyActionListener for="actionEvent" ... />

不要忘记删除<ui:insert>。这确实不是正确的方法。