我使用的是jsf 2.1和Primefaces 3.3。我想使用<p:message>在页面顶部显示页面内的错误总数。
请给我如何做的建议,这将是有帮助的,如果你可以解释一个例子。提前谢谢你。
发布于 2013-01-16 00:17:29
如果您只想统计特定的消息(例如,仅计算错误)。你可以这样做:
@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}"/>发布于 2013-01-15 23:36:26
为什么使用<p:message/>?
尝尝这个
<h:outputText value="#{fn:length(facesContext.messageList)}"/>发布于 2013-01-15 23:36:28
这方面没有内置的功能。例如,您可以向表单添加inputHidden元素,并为该输入隐藏字段添加p:message:
<p:messages for="justForErrorCount"/>
<h:inputHidden id="justForErrorCount"/>在你的支持bean中,你可以做一些检查和添加消息:
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);
}https://stackoverflow.com/questions/14340848
复制相似问题