我创建了一个复合组件,其中嵌入了一个嵌入在ui:repeat内的commandLink。我需要能够动态更改通过commandLink的action属性调用的方法,但由于需要在commandLink中指定commandLink的ID,所以它似乎不可能。
由于commandLinks在UI中:重复,它们都有动态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}"/>
使用Page:
<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上。
答案 0 :(得分:0)
好的,据我所知,在当前版本的JSF(2.1.3)中无法做到这一点。
为了解决这个问题,我使组件成为一个单一的commandLink,然后使用页面有一个ui:repeat,里面有commandLink。