您的位置:首页 > 编程语言 > Java开发

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

2017-01-17 20:41 465 查看

编写校验规则文件

(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>

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: