2014-01-07 184 views
1

我在我的应用程序中使用jsf/promefaces。我有一个包含多个输入组件的表单,其中2个输入组件是PrimaryKey值。因此,只要用户输入PK值,就会触发“ValueChange”ajax事件并验证重复PK。 如果表单中只有PK输入组件,那么当用户在输入文本中输入值并单击提交按钮(焦点仍然是InputText)时,则调用InputText的值更改侦听器,但不调用Submit按钮操作。为此,我需要点击两次提交按钮。 有没有什么办法来克服这个或者排队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" /> 

回答

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

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

+0

感谢莫,实际上我有数量的UI页面,其中数据显示不同的表,所以我不能只写一个验证方法来验证不同的表中的PrimaryKey约束。 –

+0

因为你需要一个不同的验证器,然后每个PK。但是,根据需要改变验证器应该不会太困难;) – MoYapro