struts2标签写的form表单
1. 只有FieldError级别错误才会自动显示出来,不再需要使用类似这样的标签:<s:fielderror/>
2. 验证出错的话,如果跳到form表单页面,那么会自动保留上次填入的表单信息
3. FieldError级别错误信息都会在每个Filed的上面显示
4. ActionError级别的错误会整体显示在一起,并且需要使用标签:<s:actionerror/>
5. 类型转换错误是属于FieldError级别的
6. ActionError是都放在List里的,而FieldError是放在Map里的
7. validateExecute invoke...
validate invoke..
或者
testValidate invoke...
validate invoke...
可以知道validate方法始终会被执行。
8. 输入校验无论是通过代码实现还是通过validation.xml实现,流程大概都是这样的:
A.先类型转换,转换错误的都会赋予默认值,比如int型的是0,String类型的默认值是null
B.输入校验,按照类型转换后的值进行校验。即类型转换错误的,会按照默认值校验,而不是未转换前的值。即不会按照用户输入的值进行校验。
C. 如果校验错误,会返回到用户输入界面,用户输入的值不会丢失,如果类型转换出错的字段所输出的值是用户原始输入的,而不是类型转换后的。如果什么都没输的字段的值这时会是默认值,即[color=red]int型的字段如果什么都没输入,默认值是0,这时会是0,而不是空白。[/color]
9. 通过validation验证时,如果日期输入错误,会按照字符串处理,比如:
[code]<field name="birthday">
<field-validator type="required">
<message>birthday must not be blank.</message>
</field-validator>
<field-validator type="date">
<param name="min">2007-01-01</param>
<param name="max">2007-12-31</param>
<message>birthday's value must between ${min} and ${max}</message>
</field-validator>
</field>[/code]
比如如果把2007-12-31改为2007-21-31,因为没有21这个月,则会把2007-21-31作为一个字符串,而不是Date类型,即会去调用setMax(String max)这个方法,而不是setMax(Date max)这个方法。
1. 只有FieldError级别错误才会自动显示出来,不再需要使用类似这样的标签:<s:fielderror/>
2. 验证出错的话,如果跳到form表单页面,那么会自动保留上次填入的表单信息
3. FieldError级别错误信息都会在每个Filed的上面显示
4. ActionError级别的错误会整体显示在一起,并且需要使用标签:<s:actionerror/>
5. 类型转换错误是属于FieldError级别的
6. ActionError是都放在List里的,而FieldError是放在Map里的
7. validateExecute invoke...
validate invoke..
或者
testValidate invoke...
validate invoke...
可以知道validate方法始终会被执行。
8. 输入校验无论是通过代码实现还是通过validation.xml实现,流程大概都是这样的:
A.先类型转换,转换错误的都会赋予默认值,比如int型的是0,String类型的默认值是null
B.输入校验,按照类型转换后的值进行校验。即类型转换错误的,会按照默认值校验,而不是未转换前的值。即不会按照用户输入的值进行校验。
C. 如果校验错误,会返回到用户输入界面,用户输入的值不会丢失,如果类型转换出错的字段所输出的值是用户原始输入的,而不是类型转换后的。如果什么都没输的字段的值这时会是默认值,即[color=red]int型的字段如果什么都没输入,默认值是0,这时会是0,而不是空白。[/color]
9. 通过validation验证时,如果日期输入错误,会按照字符串处理,比如:
[code]<field name="birthday">
<field-validator type="required">
<message>birthday must not be blank.</message>
</field-validator>
<field-validator type="date">
<param name="min">2007-01-01</param>
<param name="max">2007-12-31</param>
<message>birthday's value must between ${min} and ${max}</message>
</field-validator>
</field>[/code]
比如如果把2007-12-31改为2007-21-31,因为没有21这个月,则会把2007-21-31作为一个字符串,而不是Date类型,即会去调用setMax(String max)这个方法,而不是setMax(Date max)这个方法。