我需要创建包含两个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)
答案 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>
。这确实不是正确的方法。