更改JSF组件验证消息的行为

时间:2014-02-13 04:35:24

标签: jsf-2 primefaces

有没有人知道如何更改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条消息不是一个选项

1 个答案:

答案 0 :(得分:0)

我会将这两个组件保留为 autoUpdate =“true”。像这样:

<p:messages autoUpdate="true" rendered="#{userPreferenceBean.showMessages}" />
<p:growl autoUpdate="true" rendered="#{userPreferenceBean.showGrowl}" />