我的问题是我在xhtml页面中有多个Primefaces
的{{1}}。我需要的消息和验证器适用于每个人。这不是我想要的。我希望只有当我点击id为“commandButton
”的命令按钮时,所需的消息和验证器才能工作
sendform
如何修复它以仅运行所需的消息此命令按钮?
<p:growl id="growl" life="6000" />
<p:inputText id="fullName"
value="#{messageBean.fullName}"
required="true"
requiredMessage="You need to enter your full name to apply this form."
styleClass="contacttext"/>
<p:inputText id="email"
value="#{messageBean.email}"
required="true"
requiredMessage="You need to enter your email to apply this form."
validatorMessage="Invalid e-mail format">
<f:validateRegex pattern="^[_A-Za-z0-9-\+]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$" />
</p:inputText>
<p:commandButton id="sendform"
value="#{msg['sendUs']}"
actionListener="#{messageBean.sendMessage}"
update="growl fullName email textarea"
styleClass="sendus"/>
<p:commandButton id ="otherStuff"
value="otherStuff"
actionlistener="#{someBean.someWork}" />
<p:commandButton id ="anotherStuff"
value="anotherStuff"
actionlistener="#{anotherBean.anotherWork}" />
答案 0 :(得分:1)
在每个命令按钮上使用process
属性,以指定单击按钮时应处理的组件。根据您的示例代码,一些基本设置是保留sendform
按钮,并将process="@this"
添加到otherStuff
和anotherStuff
按钮。如果还需要处理其他任何内容,只需将组件ID添加到process
属性即可。
答案 1 :(得分:1)
每当按下相关按钮时,跳过所有字段的验证。
您可以实现以下代码。
<p:inputText id="fullName" required="#{not empty param[sendForm.clientId]}" />
<p:inputText id="email" required="#{not empty param[sendForm.clientId]}" />
<p:commandButton id="sendform"
binding="#{sendForm}"
value="#{msg['sendUs']}"
actionListener="#{messageBean.sendMessage}"
update="growl fullName email textarea"
styleClass="sendus"/>
<p:commandButton id ="otherStuff"
value="otherStuff"
actionlistener="#{someBean.someWork}" />
<p:commandButton id ="anotherStuff"
value="anotherStuff"
actionlistener="#{anotherBean.anotherWork}" />
您可以在BalusC
看到传奇How to let validation depend on the pressed button?中的另一个示例