<p:commandbutton>如果<p:inputtext>字段使用<p:ajax> </p:ajax> </p:inputtext> </p:commandbutton>,则不会在第一次单击时提交表单

时间:2014-09-25 15:59:19

标签: ajax jsf primefaces

我遇到以下表单的问题:

<h:form>
    <p:outputPanel autoUpdate="true">
        <p:panelGrid columns="2">
            <f:facet name="header">
                <h:outputText value="Edit a Recycler"/>
            </f:facet>

            <p:outputLabel value="Recycler Name" for="recyclerName"/>
            <p:inputText id="recyclerName" value="#{RecyclerAdmin.editItem.company.companyName}" required="true" requiredMessage="You must name the recycler.">
                <p:ajax async="true" />
            </p:inputText>

            <p:outputLabel value="Zip Code" for="zipCode"/>
            <p:inputText id="zipCode" value="#{RecyclerAdmin.editItem.company.primaryAddressId.zip}" required="false">
                <p:ajax event="blur" async="true" update="citystate" listener="#{RecyclerAdmin.zipCodeChanged}"/>
            </p:inputText>

            <p:outputLabel value="City/State"/>
            <c:choose>
                <c:when test="${RecyclerAdmin.editItem.company.primaryAddressId.city != null and RecyclerAdmin.editItem.company.primaryAddressId.city.length() > 0}">
                <h:outputText id="citystate" value="#{RecyclerAdmin.editItem.company.primaryAddressId.city}, #{RecyclerAdmin.editItem.company.primaryAddressId.state}"/>
                </c:when>
                <c:otherwise>
                    <p:spacer id="citystate"/>
                </c:otherwise>
            </c:choose>

            <f:facet name="footer">
                <p:commandButton id="updatebutton" action="#{RecyclerAdmin.update()}" value="Save" ajax="false"/>
                <p:commandButton id="cancelbutton" action="#{RecyclerAdmin.cancel}" value="Cancel" ajax="false" immediate="true"/>
            </f:facet>

        </p:panelGrid>
    </p:outputPanel>
</h:form>

如果我更改了&#34; Recycler Name&#34;文本字段,然后立即单击保存按钮,按钮单击突出显示激活,并保持活动状态,但在第二次单击该按钮之前,表单不会提交。如果我在点击保存按钮之前点击其他地方,一切正常,如果我删除了ajax async =&#34; true&#34;从recyclerName字段,表单也将正常提交,但我需要ajax引用,否则当操作zipCode字段时,字段中的任何更改的值都将被删除。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

尝试不同的活动

尝试删除async = true

p:ajax event="keyup"

http://www.primefaces.org/showcase/ui/ajax/event.xhtml

答案 1 :(得分:2)

问题是由outputPanel引起的autoUpdate =&#34; true&#34;标签。我已经为各个ajax标签添加了特定的更新字段引用,问题现在已经消失。