2013-07-01 5 views
0

На моей странице 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 всегда имеет значение параметра из первой строки списка данных.

Пожалуйста, предложите ..

+0

Дополнительная информация: MyBean является ViewScoped мой метод declartion, как: общественная пустота MyMethod (ActionEvent событие) {} –

ответ

0

Попробуйте другой Approch (он работал для меня)

<h:form id="dialogForm">  
<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> 
+0

Спасибо @jimha для ответа, я уже пробовал это (p: dialog внутри h: form), но он также не работает. Странно то, что этот подход работал для меня, а также его прямо сейчас, работая на Production Server с моим другим кодом, но теперь на локальном сервере он перестает работать автоматически. –

+0

вам нужно добавить код, который я опубликовал, вне форума вы это делаете? (потому что вложенные формы создают некоторые проблемы) – jimha

+0

Да Я не вложенные формы. и h: форма - это отдельные формы на странице. Как я уже говорил, я тоже пробовал свой код, но не повезло :(Спасибо, в любом случае .. –

Смежные вопросы