JSF Primefaces需要多个命令按钮的值问题

时间:2014-11-12 09:24:27

标签: jsf primefaces jsf-2.2

我的问题是我在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}" />

2 个答案:

答案 0 :(得分:1)

在每个命令按钮上使用process属性,以指定单击按钮时应处理的组件。根据您的示例代码,一些基本设置是保留sendform按钮,并将process="@this"添加到otherStuffanotherStuff按钮。如果还需要处理其他任何内容,只需将组件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?中的另一个示例