0

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

<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>
4

2 回答 2

2

只需将<h:form>对话框放在里面(而不是对话框放在里面<h:form>

解释:

当您使用appendToBody="true"您的对话框时,您的对话框被转移到将其包装到生成的 html 正文的表单之外,并且由于对话框内没有表单,您无法真正提交它。

也看看这个线程:Proper Construct for Primefaces Dialog

于 2013-09-11T11:16:02.333 回答
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 注解。

于 2014-02-07T12:10:45.240 回答