必须单击“提交”按钮两次才能提交表单

时间:2014-01-07 08:10:50

标签: java ajax jsf primefaces

我在我的应用程序中使用jsf / promefaces。我有一个包含多个输入组件的表单,其中2个输入组件是PrimaryKey值。因此,只要用户输入PK值,就会触发“ValueChange”ajax事件并发生重复PK的验证检查。       如果表单中只有PK输入组件,那么当用户在inputtext中输入值并单击Submit按钮(Focus仍然使用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" />

1 个答案:

答案 0 :(得分:0)

这是我实施它的方式:

输入:

<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"
/>

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