在ui上的commandLink上的setPropertyActionListener:使用复合组件重复

时间:2011-09-06 20:15:22

标签: jsf-2 primefaces composite-component

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

1 个答案:

答案 0 :(得分:0)

好的,据我所知,在当前版本的JSF(2.1.3)中无法做到这一点。

为了解决这个问题,我使组件成为一个单一的commandLink,然后使用页面有一个ui:repeat,里面有commandLink。