不显示JSR303 Bean验证消息

时间:2014-02-03 13:08:45

标签: jsf-2 primefaces bean-validation

我想在我的JSF + PrimeFaces前端使用JSR303 Bean Validation。我有一个用@Size(min=2, max=5)注释的实体。当我输入一些错误的输入并提交表单时,则不会调用action方法,这是正确的,因为验证失败了,但是我没有在元素下的前端获得任何消息。我想,有些消息资源没有正确加载。

这是我的页面:

<h:form id="profile-form" styleClass="profile-form">
    <h2>#{txt['interview.profile.form.title']}</h2>
    <p:outputPanel id="profile-panel" styleClass="profile-panel">
        <tc:textarea id="text_de" value="#{profileBean.profile.textDe}" label="#{txt['interview.profile.text_de']}" validateBeanDisabled="true"/>
    </p:outputPanel>
    <p:outputPanel id="profile-actions-panel" styleClass="interview-actions-panel profile-actions-panel">
        <p:commandButton value="#{txt['global.save']}" action="#{profileBean.saveProfile}" update="profile-form" />
    </p:outputPanel>
</h:form> 

<tc:textArea>只是一个复合组件:

    <composite:interface>
        <composite:attribute name="value" required="false" />
        <composite:attribute name="label" required="false" />
        <composite:attribute name="id" required="false" />
        <composite:attribute name="validateBeanDisabled" required="false" default="true" />
    </composite:interface>

    <composite:implementation>
        <div class="form-line float-left">
            <span class="label">#{cc.attrs.label}</span>
            <span class="input bigWidth">
                <p:inputTextarea value="#{cc.attrs.value}" id="#{cc.attrs.id}">
                    <f:validateBean disabled="#{cc.attrs.validateBeanDisabled}"/>
                </p:inputTextarea>
                <p:message id="#{cc.attrs.id}-validation" for="#{cc.attrs.id}" />
            </span>
        </div>
    </composite:implementation>

这是我的faces-config.xml:

<application>
<locale-config>
    <default-locale>de</default-locale>
</locale-config>
<resource-bundle>
    <base-name>texts</base-name>
    <var>txt</var>
</resource-bundle>

我做错了什么?我是否需要在classpath中包含其他内容?感谢。

0 个答案:

没有答案