验证机制:FieldLabel组件和ValidField组件
在.html文件中:
<span jwcid="@FieldLabel" field="ognl:components.userNameInput"/>
<input maxlength="20" jwcid="userName"/>
在.page文件中:
<component id="userNameInput" type="ValidField">
<binding name="value" expression="name"/>
<binding name="validator" expression="beans.userNameValidator"/>
<static-binding name="displayName" value=""/>
</component>
<bean name="userNameValidator" class="org.apache.tapestry.valid.StringValidator" lifecycle="page">
<set-property name="required" expression="true"/>
<set-property name="clientScriptingEnabled" expression="true"/>
<set-message-property name="requiredMessage" key="请输入用户名!!!"/>
</bean>
验证机制
一个TextField必须有输入内容且必须为String等一些验证,
如果希望调用Tapestry动态生成的JavaScript,那么这就需要用到验证机制。
验证机制通过FieldLabel和ValidField两个组件。
一个FieldLabel以一对一的关系搭配一个ValidField。每一个FieldLabel通过FieldLable的field参数连接到ValidField。
FieldLable从field参数中获取ValidField组件,在这里,获取了ID为userNameInput的ValidField组件:
<span jwcid="@FieldLabel" field="ognl:components.userNameInput"/>
FieldLabe组件还可以通过displayName参数以显示FieldLabel组件的名称(ValidField也有一个相同功能的参数displayName)。
FieldLabel组件的displayName参数可以不用设,但是ValidField必须设该参数,所以:
<static-binding name="displayName" value=""/>
所有validator都包含一个boolean类型的required属性。当required属性被设为true时,不允许field的输入为空。
Tapestry提供一系列的IValidator接口实现:StringValidator用来确认string输入,以及最少输入字符数目;
NumberValidator用来确认numeric输入,以及最大和最小输入值;
DateValidator用来确认Date输入。
validation delegate:验证代理,Validation的一个对象,用来跟踪form中field的错误信息,并且将错误信息分派给每一个field。