2013-01-15 26 views

回答

2

为什么要用<p:message/>

试试这个

<h:outputText value="#{fn:length(facesContext.messageList)}"/> 
0

在功能方面没有内置此。例如,您可以添加inputHidden元素形成,并为输入隐藏字段添加p:message

<p:messages for="justForErrorCount"/> 
<h:inputHidden id="justForErrorCount"/> 

在你的支持豆你可以做一些检查和添加消息:

if (FacesContext.getCurrentInstance().getMessageList() != null && 
     !FacesContext.getCurrentInstance().getMessageList().isEmpty()) { 

    String message = "You have " + 
     FacesContext.getCurrentInstance().getMessageList().size() + " errors"; 
    FacesContext.getCurrentInstance().addMessage("justForErrorCount", 
     new FacesMessage(FacesMessage.SEVERITY_ERROR, message); 
} 
3

如果你只是想计算特定的消息(例如只有错误)。你可以做这样的事情:

@ManagedBean 
@RequestScoped 
public class MessageCount { 

    public int getFatal() { 
     return countMessages(FacesMessage.SEVERITY_FATAL); 
    } 

    public int getError() { 
     return countMessages(FacesMessage.SEVERITY_ERROR); 
    } 

    public int getWarn() { 
     return countMessages(FacesMessage.SEVERITY_WARN); 
    } 

    public int getInfo() { 
     return countMessages(FacesMessage.SEVERITY_INFO); 
    } 

    private int countMessages(FacesMessage.Severity severity) { 
     Iterator<FacesMessage> iterator = FacesContext.getCurrentInstance().getMessages(); 
     int count = 0; 
     while (iterator.hasNext()) { 
      FacesMessage msg = iterator.next(); 
      if (severity.compareTo(msg.getSeverity()) == 0) { 
       count++; 
      } 
     } 
     return count; 
    } 
} 

而在你的JSF页面:

<h:outputText value="#{messageCount.error}"/> 
相关问题