我在表单中有以下代码:
<p:panel id="panel" header="lalalala">
<h:panelGrid columns="5">
<h:outputLabel value="Enter name" for="name" />
<p:inputText id="name" value="#{userBean.name}"
required="true" label="name" maxlength="15"
validatorMessage="oops"
requiredMessage="ooopps">
<f:validateRegex
pattern="^somepattern$">
</f:validateRegex>
<p:ajax event="blur" update="inputValidationMessage" />
</p:inputText>
<p:message id="inputValidationMessage" showSummary="false"
for="name" />
<p:watermark for="name" value="eg. John" />
</h:panelGrid>
<p:commandButton id="submitButton" value="Submit" update="panel"
actionListener="#{userBean.save}"
onclick="handleOnclick"
oncomplete="handleAjaxResponse(xhr, status, args)">
</p:commandButton>
<p:messages autoUpdate="true" globalOnly="true" showDetail="true" />
</p:panel>
所以验证消息在上面运行良好 inputText
元件。但是,即使输入无效,提交按钮仍会在单击时发出Ajax请求。如果inputText有效,我希望发送Ajax请求。
我怎么做?
此外;还有一种情况我想停用按钮。这是验证inputText并且用户单击按钮的情况。这个的原因是,我不希望用户错误地淹没请求。 (即反复按提交按钮)
目前, handleOnclick
javascript函数只显示一个模式对话框,说“等待”。由于该对话框是模态的,因此背景无法访问。但是,这仍然不能阻止用户反复按下它,因为在onclick和模态对话框显示之间传递1秒。此外;这种方法不会阻止提交无效数据。你能提出什么建议?
我使用JSF2.0和Primefaces 3.0。
任何帮助赞赏。