Primefaces 消息用于验证,其余部分则咆哮

Jua*_*DYB 2 jsf primefaces jsf-2

我有一个带有 primefaces 的 JSF 页面,我想使用 p:messages 作为输入验证的消息,并使用 Growl 元素来处理其余的内容,例如通知、错误......

\n\n

目前,我有一个带有属性的咆哮,并且我正在使用此属性发送通知。

\n\n

问题是我不知道必须将哪个属性放入 p:messages 组件中。如果我将其保留为空,则通知消息将显示在 Growl 和 p:messages 中。

\n\n

在这里您可以看到我的 JSF 示例。

\n\n
<p:growl id="growlNotifyNewReg" for="growlNotificationsNewRegister"\n                         showSummary="true" \n                         showDetail="true"\n                         autoUpdate="true"/>\n\n<h:outputText value="Validado"/>\n<p:selectBooleanCheckbox id="checkValidado" value="#{}" required="true"/>\n\n<h:outputText value="Temperatura (\xc2\xbaC)"/>\n<p:inputText id="Temperatura" value="#{}" required="true">\n      <f:validateDoubleRange minimum="-50" maximum="60" />\n      <f:convertNumber maxFractionDigits="1" />\n</p:inputText>\n\n<!-- Other inputs... -->\n\n<p:messages showSummary="true" showDetail="true" redisplay="false"/>\n
Run Code Online (Sandbox Code Playgroud)\n\n

当我想发送通知时,我喜欢这样。

\n\n
FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_INFO, "summary", "details");\nFacesContext.getCurrentInstance().addMessage("growlNotificationsNewRegister", facesMsg);\n
Run Code Online (Sandbox Code Playgroud)\n\n

此代码将消息发送到 Growl 组件,同时也发送到 messages 组件,因为它没有 for 属性。我想知道必须在消息组件中放入哪个属性才能仅显示表单的验证消息。

\n\n

正如你所看到的,我将 redisplay 属性设置为 false。我可以在 p:messages 的 for 属性中放入多个 id 吗?

\n

Sco*_*ion 5

这是一个按照您想要的方式工作的示例,您可以根据您的代码进行更改:

在 .xhtml 中

<h:form prependId="false"> 
     <p:growl id="growl" for="msg" showDetail="true" sticky="true" />  
     <p:panel header="Growl">  
     <h:panelGrid columns="2" cellpadding="5">  
        <p:outputLabel for="msg"  value="Message:" />   
        <p:inputText id="msg"  value="#{growlView.message}" required="true" />
        <p:outputLabel for="msg2" value="Message2:" />
        <p:inputText id="msg2" value="#{growlView.message2}" required="true" />  
     </h:panelGrid>  
     <p:commandButton value="Save" actionListener="#{growlView.saveMessage}" update="growl" />  
     </p:panel> 
     <p:messages id="messages" for="msg2" showDetail="true" autoUpdate="true" closable="true" />
</h:form>
Run Code Online (Sandbox Code Playgroud)

for两者的属性中<p:growl><p:messages>您可以添加任何您想要的 Id,就像for="id1 id2 .."

在豆中

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;

@ManagedBean
public class GrowlView {
    private String message;
    private String message2;

    // setters / getters

    public void saveMessage() {
        FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_INFO, "summary", "details");
        FacesContext.getCurrentInstance().addMessage("msg", facesMsg);
    }
}
Run Code Online (Sandbox Code Playgroud)