使用Struts2的输入校验(一)--校验规则文件

来源:互联网 发布:大话数据库 pdf 下载 编辑:程序博客网 时间:2024/05/17 23:43

编写校验规则文件

(1)注册页面:
4个表单域:name,pass,age,birth;
4个规则:
①name和pass只能是字母和数组,且长度必须在4到25之间。
②年龄必须是1到150之间的整数。
③生日必须在1900-01-01和2050-02-21之间。
程序清单:Struts2_4_2_1\WebRoot\regist.jsp

<s:form action="regist">    <s:textfield name="name" label="用户名"/>    <s:textfield name="pass" label="密码"/>    <s:textfield name="age" label="年龄"/>    <s:textfield name="birth" label="生日"/>    <s:submit value="注册"/></s:form>

这里写图片描述
(2)注册请求对应的Action:execute()方法直接返回success字符串
程序清单:Struts2_4_2_1\csdn\slow\app\action\RegistAction.java

public class RegistAction extends ActionSupport {    //该请求包含的4个请求参数    private String name;    private String pass;    private int age;    private Date birth;    //省略getter和setter    ...}

(3)编写RegistAction输入校验文件RegistAction-validation.xml
参考:struts2的校验文件DTD配置出错的解决方法
Struts2中指定的校验文件不起作用的原因

<?xml version="1.0" encoding="UTF-8"?><!-- 指定校验配置文件的DTD信息 --><!DOCTYPE validators PUBLIC        "-//Apache Struts//XWork Validator 1.0.3//EN"        "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"><!-- 校验文件的根元素 --><validators>    <!-- 校验Action的name属性 -->    <field name="name">        <!-- 指定name属性必须满足必填规则 -->        <field-validator type="requiredstring">            <param name="trim">true</param>            <message>必须输入名字</message>        </field-validator>        <!-- 指定name属性必须匹配正则表达式 -->        <field-validator type="regex">            <param name="expression"><![CDATA[(\w{4,25})]]></param>            <message>您输入的用户名只能是字母和数字,且长度必须在4到25之间</message>        </field-validator>    </field>    <!-- 校验Action的pass属性 -->    <field name="pass">        <!-- 指定pass属性必须满足必填规则 -->        <field-validator type="requiredstring">            <param name="trim">true</param>            <message>必须输入密码</message>        </field-validator>        <!-- 指定pass属性必须满足匹配指定的正则表达式 -->        <field-validator type="regex">            <param name="expression"><![CDATA[(\w{4,25})]]></param>            <message>您输入的密码只能是字母和数字,且长度必须在4到25之间</message>        </field-validator>    </field>    <!-- 指定age属性必须在指定范围内 -->    <field name="age">        <field-validator type="int">            <param name="min">1</param>            <param name="max">150</param>            <message>年纪必须在1到150之间</message>        </field-validator>    </field>    <!-- 指定birth属性必须在指定范围内 -->    <field name="birth">        <field-validator type="date">            <!-- 下面指定日期字符串时,必须使用本locale的日期格式 -->            <param name="min">1900-01-01</param>            <param name="max">2050-02-21</param>            <message>生日必须在${min}到${max}之间</message>        </field-validator>    </field></validators>

(4)修改struts.xml如下:

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"    "http://struts.apache.org/dtds/struts-2.3.dtd"><struts>    <!-- 设置允许OGNL允许访问静态成员 -->    <constant name="struts.ognl.allowStaticMethodAccess" value="true"/>    <!-- 设置支持动态方法调用,默认是false -->    <constant name="struts.enable.DynamicMethodInvocation" value="true"/>    <!-- 开发模式 -->    <constant name="conststruts.devMode" value="true"/>    <!-- 下面配置名为slow的包,该包继承了Struts2的默认包,使用默认指定空间 -->    <package name="slow" extends="struts-default">        <action name="regist" class="csdn.slow.app.action.RegistAction">            <!-- 类型转换失败、输入校验失败,转入该页面 -->            <result name="input">/regist.jsp</result>            <result>/show.jsp</result>        </action>    </package></struts>

(5)显示错误提示
参考:struts2标签之< s:fielderror>
这里写图片描述

0 0
原创粉丝点击