3

我创建了一个复合组件,它在 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 上。

4

1 回答 1

0

好的,据我所知,这不能在当前版本的 JSF (2.1.3) 中完成。

为了解决这个问题,我将组件设置为单个 commandLink,然后使用页面有一个 ui:repeat,其中包含 commandLink。

于 2011-10-18T15:20:01.953 回答