2

我已经尝试使用这段代码在表单上包含出生日期字段:

<h:form>
    <h2>JSF Registration App</h2>
    <h4>Registration Form</h4>
    <table>
        <tr>
            <td>First Name:</td>
            <td>
        <h:inputText label="First Name" id="fname" value="#{mybean.firstName}" required="true" />
                <h:message for="fname" />
            </td>
        </tr>
        <tr>
            <td>
                <h:inputText value="#{userBean.dob}" id="dob" required="true" > 
                    <f:convertDateTime pattern="MM-dd-yy"/> 
                </h:inputText> (mm-dd-yy) 
                <h:message for="dob"/>
            </td>
        </tr>

    </table>

    <p>
        <h:commandButton value="clique ici pour valider" action="Register" />
    </p>

</h:form>

我在将字段留空后收到此消息

(mm-dd-yy) j_idt5:dob : erreur de validation. Vous devez indiquer une valeur.

为什么消息中有jsf自动生成的id“j_idt5:dob”?

4

1 回答 1

4

只要您没有label像这样显式指定输入组件的属性,输入组件的客户端 ID 就会成为默认的转换/验证消息标签:

<h:inputText ... label="Date of birth" />

如果你这样做,那么消息将变为:

出生日期:验证错误。Vous devez indiquer une valeur。


客户端 ID 中的j_idt5来自<h:form>。如果你给它一个固定的ID id="register"(并保持label输入组件的省略),那么消息变成:

register:dob : 错误的验证。Vous devez indiquer une valeur。


validatorMessage如有必要,您可以按属性覆盖整个验证器消息。

<h:inputText ... validatorMessage="Please enter date of birth." />

请输入出生日期。


等效地,来自的转换错误消息<f:convertDateTime>可被converterMessage属性覆盖。

<h:inputText ... converterMessage="Please enter date of birth in mm-dd-yy format." />

请以 mm-dd-yy 格式输入出生日期。

于 2013-10-11T16:20:45.753 回答