Struts2 入门学习笔记(四)——输入校验

来源:互联网 发布:比尔精英英语 知乎 编辑:程序博客网 时间:2024/05/21 12:43


Struts2 入门学习笔记(四)——输入校验

一.编写校验规则文件

首先我们写出要校验的首页:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<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 label="注册"/>
</s:form>
</body>
</html>
其次写出校验单(在同目录下,命名规则为ActionName-validation.xml):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0.3//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators>
<field name="name">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>必须输入名字</message>
</field-validator>
<field-validator type="regex">
<param name="regex"><![CDATA[(\w{4,25})]]></param>
<message>您的用户名只能是字母或者数字,且长度必须在4到25之间</message>
</field-validator>
</field>
<field name="pass">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>必须输入密码</message>
</field-validator>
<field-validator type="regex">
<param name="regex"><![CDATA[(\w{4,25})]]></param>
<message>您的用户名只能是字母或者数字,且长度必须在4到25之间</message>
</field-validator>
</field>
<field name="age">
<field-validator type="int">
<param name="min">1</param>
<param name="max">150</param>
<message>年龄必须在1到150之间</message>
</field-validator>
</field>
<field name="birth">
<field-validator type="date">
<param name="min">1900-01-01</param>
<param name="max">2050-02-21</param>
<message>生日必须在${min}到${max}之间</message>
</field-validator>
</field>
</validators>
 
您的用户名只能是字母或者数字,且长度必须在4到25之间
用户名:123
您的用户名只能是字母或者数字,且长度必须在4到25之间
密码:12
年龄必须在1到150之间
年龄:0
Invalid field value for field "birth".
生日:12
Submit

这样效果就达到了

二.国际化提示信息


在上面的检验文件中我们将所有提示信息全部通过硬编码方式写入了,不利于国际化,我们可以进行以下修改:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0.3//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators>
<field name="name">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message key="name.requried" />
</field-validator>
<field-validator type="regex">
<param name="regex"><![CDATA[(\w{4,25})]]></param>
<message key="name.regex" />
</field-validator>
</field>
<field name="pass">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message key="pass.requried" />
</field-validator>
<field-validator type="regex">
<param name="regex"><![CDATA[(\w{4,25})]]></param>
<message key="pass.regex" />
</field-validator>
</field>
<field name="age">
<field-validator type="int">
<param name="min">1</param>
<param name="max">150</param>
<message key="age.range" />
</field-validator>
</field>
<field name="birth">
<field-validator type="date">
<param name="min">1900-01-01</param>
<param name="max">2050-02-21</param>
<message key="birth.range" />
</field-validator>
</field>
</validators>
所谓国际化检验就是另外新建一个properties文件,注意放在相同目录下才行,用法如上,下面就是那个RegistAction.properties文件:
name.requried=\u5FC5\u987B\u8F93\u5165\u540D\u5B57
name.regex=\u60A8\u7684\u7528\u6237\u540D\u53EA\u80FD\u662F\u5B57\u6BCD\u6216\u8005\u6570\u5B57\uFF0C\u4E14\u957F\u5EA6\u5FC5\u987B\u57284\u523025\u4E4B\u95F4
pass.requried=\u5FC5\u987B\u8F93\u5165\u5BC6\u7801
pass.regex=\u60A8\u7684\u7528\u6237\u540D\u53EA\u80FD\u662F\u5B57\u6BCD\u6216\u8005\u6570\u5B57\uFF0C\u4E14\u957F\u5EA6\u5FC5\u987B\u57284\u523025\u4E4B\u95F4
age.range=\u5E74\u9F84\u5FC5\u987B\u57281\u5230150\u4E4B\u95F4
birth.range=\u751F\u65E5\u5FC5\u987B\u5728${min}\u5230${max}\u4E4B\u95F4
运行结果达到同样的效果了


三.使用客户端校验

在客户端使用struts校验比较简单,一共就两个步骤:
        (1)将输入页面的表单元素改用struts标签处理
        (2)为该<s:form../>元素增加 validate="true"属性
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<s:form action="regist" validate="true">
<s:textfield name="name" label="用户名" />
<s:textfield name="pass" label="密码" />
<s:textfield name="age" label="年龄" />
<s:textfield name="birth" label="生日" />
<s:submit label="注册"/>
</s:form>
</body>
</html>




0 0
原创粉丝点击