我正在尝试实现一个包含事件的复合组件(util:compList
)(例如行选择事件),并且此事件在复合的使用页面中触发一个操作。
复合代码(compList
):
<composite:interface>
<composite:attribute name="list" required="true" type="java.util.Collection" />
<composite:attribute name="onselect" method-signature="void select(org.primefaces.event.SelectEvent)" />
<composite:attribute name="update" />
</composite:interface>
<composite:implementation>
<ui:param name="hasSelectBehavior" value="#{not empty cc.attrs.onselect}" />
<h:form>
<p:dataTable ...>
<p:ajax event="rowSelect"
listener="#{cc.attrs.onselect}"
update="#{cc.attrs.update}" />
<p:column>
Some content here
</p:column>
</p:dataTable>
</h:form>
</composite:implementation>
使用页面代码:
<util:compList list="#{bean.myList}"
selectvalue="#{bean.myEvent}"
update=":myFormId, :myFormId:myOtherFormComponent" />
抛出异常:
找不到带有“processTab:j_idt159:myFormId:j_idt161:j_idt162:userNotesTable”引用的表达式“myFormId”的组件。
我知道异常是指复合组件无法找到我正在尝试重新渲染的组件ID这一事实。有没有其他方法可以正确地做到这一点?