我遇到以下表单的问题:
<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字段时,字段中的任何更改的值都将被删除。
有什么想法吗?
答案 0 :(得分:2)
尝试不同的活动
尝试删除async = true
p:ajax event="keyup"
答案 1 :(得分:2)
问题是由outputPanel引起的autoUpdate =&#34; true&#34;标签。我已经为各个ajax标签添加了特定的更新字段引用,问题现在已经消失。