简单OA项目笔记(3):Struts校验框架


    第一次接触struts2的校验框架,不算难。

    今天看到两种用法:一是把校验文件放在action的相同目录下;二是action所在目录下放一个,和bean所在的目录下各放一个。

    第二种等于能自己给校验的方法起名字,其实效果类似。



一:单个validation.xml的校验

在action的所在的包下,建一个:“action名称-方法名-validation.xml”
requiredstring是校验方法,是必须的
message提示信息

<validators>
	<field name="user.firstname">
		<field-validator type="requiredstring">
			<message>错误提示信息:required first name</message>
		</field-validator>
	</field>
</validators>

因为action里聚合了private User user;

所以<field name 都是以“user.”开头的。

type="int"是校验的类型,这里是在一个数值区间之中

	<field name="user.age">
		<field-validator type="required">
			<message>required age</message>
		</field-validator>
		<field-validator type="int">
			<param name="min">1</param>
			<param name="max">130</param>
			<message>age should be between ${min} and ${max}</message>
		</field-validator>
	</field>



二:action所在目录下和bean所在的目录下各放一个validation.xml

action包下的校验文件:

 type="visitor"表名用visitor的校验方法

"context"是校验名称,这部分出现在第二个xml的文件名里

"appendPrefix">true<> 开启提示信息的开头部分

<validators>
	<field name="user">
		<field-validator type="visitor">
			<param name="context">user</param>
			<param name="appendPrefix">true</param>
			<message>user's </message>
		</field-validator>
	</field>
</validators>



bean所在目录下的校验文件:

在bean里新建第二个校验xml
“bean名称-第一个校验xml中的校验名称-validation.xml”
<field name="firstname"  不再是user.,剩下都一样

<validators>
	<field name="firstname">
		<field-validator type="requiredstring">
			<message>required first name</message>
		</field-validator>
	</field>

	<field name="age">
		<field-validator type="required">
			<message>required age</message>
		</field-validator>
		<field-validator type="int">
			<param name="min">1</param>
			<param name="max">150</param>
			<message>age should be between ${min} and ${max}</message>
		</field-validator>
	</field>

</validators>




三:输入改正的信息之后,表单不能提交

光这样用验证框架后,检查到输入错误后有个bug:就是输入改正之后再提交,错误信息一直重复出现,而且表单不能提交到action


原因上一篇文章分析过了,

是现在action现在由spring生成(而不是struts),
spring配置文件中action的bean不配置scope的时候,默认是单例,也就是说所有请求都是一个action处理,才会出问题
所以要配<bean id="saveUserAction" class="com.xxx.action.xxxAction" scope="prototype">
这样验证之后才能正确显示,修改之后才能马上正确提交













  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值