有没有人知道如何更改JSF组件消息的行为,例如验证器消息,转换器消息?我正在进行的项目,它允许用户配置严重性级别的(无论是primeface咆哮消息还是普通的jsf p:message)自定义消息的行为。我们有单独的util类来管理它。 但是我们找不到配置jsf组件消息行为的解决方案。我们希望根据用户配置它的方式向用户显示它们,例如:如果用户想要将所有消息视为growl,则包括jsf组件消息在内的所有消息都应显示为growl消息。任何的想法? 我们使用primeface 4,jee7,java 1.7
更新
这是一个企业应用程序。我们在标头处有一个<p:growl id="growlMessageId" for="growlMessage" globalOnly="false" sticky="false" autoUpdate="true" redisplay="true" escape="false"/>
和一个<p:messages id="messages" globalOnly="false" showDetail="false" autoUpdate="true" closable="true" redisplay="false" escape="false" rendered="#{empty param['showMessageInGlobal'] or param['showMessageInGlobal']}"/>
,所有页面(超过50个)都使用这两个组件来显示所有消息。所以除了jsf组件错误消息之外,我们还有这个util方法(其中的一部分)来改变消息的行为。
FacesMessage fm = new FacesMessage(messageDescriptor);
fm.setSeverity(this.getFacesMessageSeverity(messageSeverity));
fm.setDetail("");
switch (severityDisplayType) {
case NOTIFICATION:
this.facesContext.addMessage(componentClientId, fm);
break;
case GROWL:
this.facesContext.addMessage("growlMessage", fm);
break;
default:
}
我们想要更改与上面相同的jsf组件消息行为。在每个页面中保留2条消息不是一个选项
答案 0 :(得分:0)
我会将这两个组件保留为 autoUpdate =“true”。像这样:
<p:messages autoUpdate="true" rendered="#{userPreferenceBean.showMessages}" />
<p:growl autoUpdate="true" rendered="#{userPreferenceBean.showGrowl}" />