struts2为我们提供了一套校验的框架,只要使用即可
在action下新建同名文件: XXXAction-validation.xml ,往当中写入相应的校验信息,struts在页面提交的时候会自动在此文件当中去寻找相应的信息进行匹配
一个文件范例如下:SaveUserAction-validation.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<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>
此文件中只配置了采用visitor的类型进行校验,如出现错误信息会在信息前添加user‘s 字段
然后在User类的文件夹下创建关于User的具体校验信息
范例如下:User.hbm.xml,注意文件名一定要符合规范
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="oa.sean.bean.User" table="users">
<id name="id" type="java.lang.Integer" column="id">
<generator class="increment"></generator>
</id>
<property name="firstname" type="string" column="firstname" length="50"></property>
<property name="lastname" type="string" column="lastname" length="50"></property>
<property name="age" type="java.lang.Integer" column="age" ></property>
</class>
</hibernate-mapping>
这里在强调一点:对于有状态的Action在配置的时候要将其配置成prototype,否则将会出现系列问题
典型的就是配置好之后第一次输入错误将正确的返回错误信息,第二次依然返回错误信息而无法提交
因为action默认的是singleton类型,所有只生成一个实例,而错误信息只要第一次产生便会存在
就算第二次输入的是正确的信息,依然有第一次的fielderror存在,因此表单仍然不会提交
至此,能为表单提供一个符合自己要求的校验框架了