java - 必须单击 "Submit"按钮两次才能提交表单

标签 java ajax jsf primefaces

我在我的应用程序中使用 jsf/promefaces。我有一个包含多个输入组件的表单,其中 2 个输入组件是 PrimaryKey 值。因此,一旦用户输入 PK 值,就会触发“ValueChange”ajax 事件,并进行重复 PK 的验证检查。 如果表单中只有 PK 输入组件,那么当用户在 inputtext 中输入值并单击“提交”按钮时(焦点仍然是 InputText),则会调用 InputText 的值更改监听器,但不会调用“提交”按钮操作。因此,我需要单击“提交”按钮两次。 是否有任何方法可以克服这个问题或对 ajax 调用进行排队的方法。下面给出代码。

 <p:outputLabel value="selectOneLabel" for="selectOne" /> 
 <p:selectOneMenu id="selectOne" value="#{bean.selectOne}" required="true" >
   <f:selectItems value="#{bean.selectOneList}" />
   <p:ajax event="change" listener="#{bean.validatePK()}"/>
 </p:selectOneMenu>

 <p:outputLabel value="inputTextLabel" for="input" />
 <p:inputText id="inputText"  value="#{bean.inputText}" required="true">
   <p:ajax listener="#{bean.validatePK()}"/>
 </p:inputText>

 <p:commandButton id="submit" action="#{bean.CreateAction()}" value="Submit" />

最佳答案

这就是我的实现方式:

输入:

<p:inputText value="#{value}">
    <p:ajax process="@this" update="@this error_msg" partialSubmit="true"/>
    <f:validator validatorId="validatorID"/>
</p:inputText>

按钮:

<p:commandButton id="saveButton" 
                 action="#{controller.save()}"
                 process="@all"
                 update="@all"
                 partialSubmit="false"
/>

这就像一个魅力;)希望它也能帮助你。

关于java - 必须单击 "Submit"按钮两次才能提交表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20966772/

相关文章:

jsf - <h :commandLink> not working inside a <h:dataTable>

java - jsf 或任何框架如何使用注释创建 bean?

java - 如何在 java 中组合(连接)具有相同列名的两个数据框

java - 在启动另一个函数的同时在后台运行一个函数

Java 嵌入式数据库比较

java - Java 中的引用计数

javascript - 如何在不提交表单的情况下使用 jquery ajax 发送表单数据?

javascript - strope.js 和 openfire 谁在页面重新加载时终止连接?

javascript - $.ajax 中类似 $.get 的调用

jsf - 如何将 selectManyCheckbox 中选择的数据存储到不同的对象中?