2016-09-07 2 views
0

У меня есть эта рабочая кнопка в р: DataTableКак использовать f: setPropertyActionListener с p: splitButton?

<p:commandButton update=":dialog" oncomplete="PF('dialog').show()" title="Do something"> 
    <f:setPropertyActionListener value="#{transaction}" target="#{transactionModel.selectedTx}" /> 
</p:commandButton> 

Он устанавливает selectedTx в модели, так что я могу делать вещи с ним в диалоге.

Теперь я хочу, чтобы добавить новые функциональные возможности моей кнопки, поэтому я выбрал p:splitButton:

<p:splitButton update=":dialog" oncomplete="PF('dialog').show()" title="Do something"> 
    <f:setPropertyActionListener value="#{transaction}" target="#{transactionModel.selectedTx}" /> 
    <p:menuitem value="Do something else" oncomplete="PF('otherDialog').show()" update=":otherDialog" /> 
</p:splitButton> 

Когда я использую новую кнопку, selectedTx не установлен. Работает только первая кнопка.

Как обновить мою собственность в модели при нажатии новой кнопки?

+1

не уверен, если это верно в все, но вы попробовали 'setPropertyActionListener' внутри тега' p: menuitem'? – Apostolos

+0

Я пробовал, и это не сработало, но у меня было отсутствующее «обновление» - теперь это работает. Тем не менее, selectedTx не всегда обновляется, но мне сложно узнать, почему. Пока я не могу последовательно воспроизводить его. – Tim

ответ

0

Решение было добавить setPropertyActionListener внутри элемента меню (как это было предложено Апостолоса) и DataTable необходимо обновить (а не только в диалоге):

<p:splitButton update="datatable :dialog" oncomplete="PF('dialog').show()" title="Do something"> 
    <f:setPropertyActionListener value="#{transaction}" target="#{transactionModel.selectedTx}" /> 

    <p:menuitem value="Do something else" oncomplete="PF('otherDialog').show()" update="datatable :otherDialog"> 
     <f:setPropertyActionListener value="#{transaction}" target="#{transactionModel.selectedTx}" /> 
    </p:menuitem> 
</p:splitButton> 
Смежные вопросы