我创建了一个复合组件,它在 ui:repeat 中嵌入了 commandLink。我需要能够动态更改通过 commandLink 的 action 属性调用的方法,但由于您需要在
由于 commandLinks 在 UI:repeat 中,它们都有一个动态 ID。
作为一种解决方法,我正在尝试在命令链接上使用 setPropertyActionListener。但是,看起来该方法从未被调用过。我错过了什么吗?这是实现我想要的错误的方法吗?
这是一些示例代码。
复合组件:
<ui:repeat value="#{cc.attributes.value}" var="aUser">
<li class="ui-widget-content ui-state-default q-userListResult">
<p:commandLink
styleClass="q-userList-resultLink"
update=":userList:q-userList-formUsers:userToolTip">
<f:setPropertyActionListener value="{aUser}" target="#{cc.attributes.resultLinkActionListener}"/>
使用页面:
<q:userList id="userList"
value="#{caseWizardBackingBean.companyContacts}"
renderHeader="false"
resultLinkActionListener="#{caseWizardBackingBean.selectedCompanyContact}"/>
豆:
private CTProfile selectedCompanyContact;
public CTProfile getSelectedCompanyContact() { return this.selectedCompanyContact; }
public void setSelectedCompanyContact(CallTrackProfile ctp) { this.selectedCompanyContact = ctp; }
我尝试在属性的 getter 和 setter 中添加一些调试语句和断点,但它们从未被命中。我猜测正在发生一些奇怪的事情,因为我能找到的所有示例都表明这应该有效(但它们不使用复合组件)。
我应该指出,我正在使用 Primefaces commandLink,但这似乎也发生在常规 commandLink 上。