`
ttitfly
  • 浏览: 616008 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

struts2知识点备忘

阅读更多
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. 如果校验错误,会返回到用户输入界面,用户输入的值不会丢失,如果类型转换出错的字段所输出的值是用户原始输入的,而不是类型转换后的。如果什么都没输的字段的值这时会是默认值,即int型的字段如果什么都没输入,默认值是0,这时会是0,而不是空白。
9. 通过validation验证时,如果日期输入错误,会按照字符串处理,比如:
<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>

比如如果把2007-12-31改为2007-21-31,因为没有21这个月,则会把2007-21-31作为一个字符串,而不是Date类型,即会去调用setMax(String max)这个方法,而不是setMax(Date max)这个方法。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics