如何处理primefaces对话框

时间:2013-09-11 11:13:06

标签: jsf-2 primefaces

我有一个primefaces对话框,我想要做的是在commandbutton动作开始之前处理inputtext。在myController.sendToPostBox方法中,myController.rejectionReason字符串返回null。这是我的视图代码。当我删除进程属性时,commandbutton不起作用。

<h:form>
....
<p:dialog id="myPanel"
                  widgetVar="myPanelId"
                  resizable="true"
                  appendToBody="true"
                  draggable="true"
                  height="200"
                  width="300">
            <p:panelGrid id="myPanelGridId" style="width: 250px;" styleClass="panelGridWithoutBorder">
                <p:row>
                    <p:column colspan="2">
                        <p:inputTextarea style="width: 250px;" value="#{myController.rejectionReason}"/>
                    </p:column>
                </p:row>
                <p:row>
                    <p:column>
                        <p:commandButton value="Save"
                                         oncomplete="if (!args.validationFailed) myPanel.hide();"
                                         process="myPanelId"
                                         action="#{myController.sendToPostBox()}"/>
                    </p:column>
                    <p:column>
                        <p:commandButton value="Close" />
                    </p:column>
                </p:row>
            </p:panelGrid>
        </p:dialog>
</h:form>

2 个答案:

答案 0 :(得分:2)

只需将<h:form>放在对话框内(而不是<h:form>内的对话框)

说明:

当你使用appendToBody="true"时,你的对话框正在转移在表格之外将其包装到生成的html的正文中,并且由于对话框中没有任何表格你可以'真的提交它。

另请参阅此主题:Proper Construct for Primefaces Dialog

答案 1 :(得分:0)

你需要这样的东西:

<h:form id="formDialog">
  <p:commandButton id="basic" value="Basic Dialog" onclick="PF('dlg1').show();"   type="button" />  
</h:form>

<p:dialog id="basicDialog" header="Basic Dialog" widgetVar="dlg1">  

    <h:form id="formUser">

            <h:panelGrid id="grid" columns="2">


                <h:outputLabel value="Username:" />
                <p:inputText id="user" value="#{user.name}" />


                <h:outputLabel value="Password:" />
                <p:inputText id="password"  value="#{user.password}" />



                <h:commandButton value="Login" id="btn" process="@formUser" actionListener="#{user.login}"   />

          </h:panelGrid>

     </h:form>

</p:dialog>  
actionListener标记中的

“login”是User(bean)类中的一个方法,需要@ManagedBean注释。