【问题标题】:Primefaces messages for validation and growl for the rest用于验证的 Primefaces 消息和用于其余部分的咆哮
【发布时间】:2015-03-10 00:52:20
【问题描述】:

我有一个带有 primefaces 的 JSF 页面,我想将 p:messages 用于输入验证的消息,并将 Growl 元素用于通知、错误等其余内容...

目前我有一个带有属性的咆哮,我正在发送带有这个属性的通知。

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

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

<p:growl id="growlNotifyNewReg" for="growlNotificationsNewRegister"
                         showSummary="true" 
                         showDetail="true"
                         autoUpdate="true"/>

<h:outputText value="Validado"/>
<p:selectBooleanCheckbox id="checkValidado" value="#{}" required="true"/>

<h:outputText value="Temperatura (ºC)"/>
<p:inputText id="Temperatura" value="#{}" required="true">
      <f:validateDoubleRange minimum="-50" maximum="60" />
      <f:convertNumber maxFractionDigits="1" />
</p:inputText>

<!-- Other inputs... -->

<p:messages showSummary="true" showDetail="true" redisplay="false"/>

当我想发送通知时,我会这样做。

FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_INFO, "summary", "details");
FacesContext.getCurrentInstance().addMessage("growlNotificationsNewRegister", facesMsg);

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

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

【问题讨论】:

  • 请发布您的代码。
  • 我的帖子更新了

标签: jsf jsf-2 primefaces


【解决方案1】:

这是一个你想要的例子,你可以根据你的代码来改变它:

在 .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>

&lt;p:growl&gt;&lt;p:messages&gt;for 属性中,您可以添加任何您想要的ID,就像for="id1 id2 .." 一样

在 bean 中

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);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-25
    • 1970-01-01
    • 2016-04-24
    • 1970-01-01
    相关资源
    最近更新 更多