一个输入字段的多个错误消息

时间:2014-02-18 09:26:36

标签: jsf bean-validation

我正在使用facelets创建表单。一个输入字段如下所示:

<p:inputText id="initials" value="#{dilution.initials}" />

dilution是一个实体bean,而initials字段在其上设置了两个验证约束。一个大小约束和一个正则表达式模式约束。我的问题是获取两个约束的错误消息,以显示在输入字段旁边。使用<h:message>仅显示其中一条消息并使用<h:messages>显示所有输入字段错误消息或不显示任何内容(当我尝试设置<h:messages for="initials" autoUpdate="true" />时)。

有没有简单的方法可以做到这一点?

完整形式:

<h:form id="addDilForm">
    <p:panel>
        <p:messages autoUpdate="true" showDetail="TRUE" />
    <p:panelGrid>
        <f:facet name="header" >
            <p:row><p:column colspan="3">Ny spädningsfaktor</p:column></p:row>
        </f:facet>

        <p:row> 
            <p:column colspan="1">
                <p:outputLabel for="sampT">Provtyp</p:outputLabel>
            </p:column>
            <p:column>
                <p:selectOneMenu id="sampT" required="true" value="#{dilution.dilution.sampleType.ID}" >
                    <f:selectItem itemLabel="-" itemValue="" />
                    <f:selectItems value="#{SampleTypeController.samples}" var="samp" itemLabel="#{samp.name}" itemValue="#{samp.ID}" />
                </p:selectOneMenu>
            </p:column>
            <p:column>
                <p:message for="sampT" />
            </p:column>                                        
        </p:row>

        <p:row>
            <p:column>
                <p:outputLabel for="initials">Initialer</p:outputLabel>
            </p:column>
            <p:column >
                <p:inputText id="initials" value="#{dilution.initials}" />
            </p:column>
            <p:column>
                <p:message for="initials" />
            </p:column>                                  
        </p:row>

        <f:facet name="footer">
            <p:row>
                <p:column colspan="3">
                    <p:commandButton  value="Save" action="#{dilution.save()}" update="addDilForm" icon="ui-icon-check" />                                
                </p:column>
            </p:row>
        </f:facet>
    </p:panelGrid>
    </p:panel>
</h:form>

1 个答案:

答案 0 :(得分:1)

  

使用<h:message>仅显示其中一条消息

在保留<h:messages>属性的同时,只需使用复数“s”而不是<h:message> for

<h:messages for="initials" />

<p:messages>的工作方式相同,只是使用不同的用户界面。