На моей странице xhtml есть ui: repeat, из которого мне нужно открыть диалоговое окно, которое отправит сообщение пользователю, на который нажата кнопка. Для этого я пытался ниже два подхода:p: commandButton не работает внутри p: dialog
1.) Перемещение р: диалог в отдельный час: форма, как показано ниже:
<p:dialog id="dialog" showHeader="true" header="Write your message" closable="true" widgetVar="dlg" resizable="false" draggable="true" modal="true" styleClass="job_model_popup" height="300">
<h:form id="dialogForm">
<p:panel id="messageFormPanel">
<br />
<h:inputTextarea label="Message" styleClass="input_text_field" value="#{MyBean.messageBody}" rows="10" required="true" />
<br />
<br />
<p:commandButton actionListener="#{MyBean.myMethod}" value="Send" styleClass="btn" update=":parentForm:growl" oncomplete="handleRequest(xhr, status, args);">
<f:param name="_param1" value="#{list['param1Id']}" />
<f:param name="_param2" value="#{list['param2Id']}" />
</p:commandButton>
</p:panel>
</h:form>
</p:dialog>
Я вызова этого диалогового окна с кнопкой ниже что в Ui: повторяю:
<h:form id="parentForm">
<ui:repeat id="dataList" var="list" varStatus="status" value="#{MyBean.dataList}">
<p:commandLink value="Send Msg" oncomplete="dlg.show();" update=":dialogForm">
<f:param value="#{list}" name="list" />
</p:commandLink >
</ui:repeat>
</h:form>
проблема с этим подходом является то, что р: CommandButton не стреляя в диалоговом окне. Также странно, что этот код работал 2 дня назад и без каких-либо изменений он прекратил работать автоматически :).
2.) р: диалог в той же форме, как Ui: повторить: -
<h:form id="parentForm">
<ui:repeat id="dataList" var="list" varStatus="status" value="#{MyBean.dataList}">
<p:commandLink value="Send Msg" oncomplete="dlg.show();" update=":parentForm:messageFormPanel">
<f:param value="#{list}" name="list" />
</p:commandLink >
</ui:repeat>
<p:dialog id="dialog" showHeader="true" header="Write your message" closable="true" widgetVar="dlg" resizable="false" draggable="true" modal="true" styleClass="job_model_popup" height="300">
<p:panel id="messageFormPanel">
<br />
<h:inputTextarea label="Message" styleClass="input_text_field" value="#{MyBean.messageBody}" rows="10" required="true" />
<br />
<br />
<p:commandButton actionListener="#{MyBean.myMethod}" value="Send" styleClass="btn" update=":parentForm:growl" oncomplete="handleRequest(xhr, status, args);">
<f:param name="_param1" value="#{list['param1Id']}" />
<f:param name="_param2" value="#{list['param2Id']}" />
</p:commandButton>
</p:panel>
</p:dialog>
</h:form>
Проблема такого подхода заключается в том, что р: CommandButton теперь работает, но он не обновляется с данными строки, из которой щелкнула кнопка commandLink. Таким образом, p: commandButton из p: dialog всегда имеет значение параметра из первой строки списка данных.
Пожалуйста, предложите ..
Дополнительная информация: MyBean является ViewScoped мой метод declartion, как: общественная пустота MyMethod (ActionEvent событие) {} –