部分提交不适用于p:commandButton

时间:2014-09-30 13:34:32

标签: primefaces

<h:form id="addForm">
                    <p:growl showDetail="true" id="messages" />
                    <ul class="#{msgs['form_ul_class']}">

                        <!-- Employee Number -->
                        <li><label for="empNo"><h1>&bull;</h1> <span>#{msgs['form.label.emp.number']}</span></label>
                            <p:inputText id="empNo" name="empNo"
                                value="#{empDocumentBean.empDocument.empNo}"
                                required="true"
                                requiredMessage="#{msgs['err.required']} #{msgs['form.label.emp.number']}" />
                        </li>

                        <li>
                            <h:panelGroup id="nqpanel">
                            <ul>
                            <li>
                                <!-- Name --> <label for="name"><h1>&bull;</h1>
                                    <span>#{msgs['form.label.name']}</span></label> 
                                    <p:inputText id="name"
                                    name="name" value="#{empDocumentBean.empDocument.name}"
                                    required="false"
                                    requiredMessage="#{msgs['err.required']} #{msgs['form.label.name']}" />
                            </li>
                            <li>
                                <!-- EID --> <label for="id" class="#{msgs['label_class']}"><h1>&bull;</h1>
                                    <span>#{msgs['form.label.id']}</span></label>
                                    <p:inputText id="id"
                                    name="id" styleClass="#{msgs['input_class']}"
                                    value="#{empDocumentBean.empDocument.ID}"
                                    required="false"
                                    requiredMessage="#{msgs['err.required']} #{msgs['form.label.id']}" />
                             </li>
                             </ul>
                              </h:panelGroup>
                    </li>

                        <li></li>
                        <li>
                            <!-- Button to add only Name and Employee ID -->
                            <div>
                                <ul>
                                    <li><p:commandButton value="Add"
                                            action="#{empDocumentBean.addNameId}"
                                            partialSubmit="true" process="@this addForm:nqpanel"
                                            update="nqList">
                                        </p:commandButton></li>
                                </ul>
                            </div>

                        <div class="table">
                        <p:dataTable id="nqList" tableStyle="text-align:center; font-size:14px; direction: ltr;"
                            var="item" value="#{empDocumentBean.nqList}">
                            <p:column>
                                <f:facet name="header">
                                    <h:outputText value="#{msgs['form.label.name']}" />
                                </f:facet>
                                <h:outputText value="#{item.name}" />
                            </p:column>

                            <p:column>
                                <f:facet name="header">
                                    <h:outputText value="#{msgs['form.label.id']}" />
                                </f:facet>
                                <h:outputText value="#{item.id}" />
                            </p:column>
                        </p:dataTable>
                    </div>

                    nqList is a collection NameIdBean object with name and id properties

    The method which should be executed in empDocumentBean is as below:
    public void addNameId() {
    if(this.empDocument.getName() != null && this.empDocument.getID() != null)
    {
        nqList.add(new NameIdBean(this.empDocument.getName(), this.empDocument.getID()));
    }
    empDocument.setName(null);
    empDocument.setQID(null);
}

部分提交p:commandButton不起作用,因为&#39;添加&#39;单击按钮empDocument的bean属性(即名称和ID)仍为空。

如果p:commandButton的实现是正确的,请告诉我?如果是,那么为什么不发生部分提交。有没有其他替代方法来实现部分提交?感谢

1 个答案:

答案 0 :(得分:1)

首先:我看到你正在使用primefaces命令按钮组件,它使用actionListener而不是动作 Command button in primefaces

第二:如果你想使用你可以使用的行动

<h:commandButton value="#{bundle['application.login']}" action="welcome"></h:commandButton>

您应该将方法 addNameId 的返回类型更改为字符串,它代表导航中的下一个页面名称