setPropertyActionListener на commandLink внутри пользовательского интерфейса: повторите с составным компонентом - PullRequest
3 голосов
/ 07 сентября 2011

Я создал составной компонент, который имеет commandLink, встроенный в пользовательский интерфейс: repeat.Мне нужно иметь возможность динамически изменять метод, который вызывается через свойство действия commandLink, но это не представляется возможным из-за того, что вам нужно указать идентификатор commandLink в

, так как commandLinksв пользовательском интерфейсе: повторяю, все они имеют динамический идентификатор.

В качестве обходного пути я пытаюсь использовать 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; }    

Я пытался добавить некоторые отладочные операторы и точки останова в метод получения и установки свойства, но они никогда не были обработаны.Я предполагаю, что происходит что-то странное, потому что все примеры, которые я могу найти, показывают, что это должно работать (но они не используют составной компонент).

Я должен отметить, что я использую PrimefacescommandLink, но, похоже, это происходит и с обычным commandLink.

1 Ответ

0 голосов
/ 18 октября 2011

ОК, насколько я могу судить, этого нельзя сделать в текущей версии JSF (2.1.3).

Чтобы обойти эту проблему, я сделал компонент единственным commandLink, а затем на странице использования есть пользовательский интерфейс: повторите с commandLink внутри него.

...