天天看点

【4】SSH整合-加入struts校验框架

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存在,因此表单仍然不会提交

至此,能为表单提供一个符合自己要求的校验框架了

继续阅读