几个错误点,纠结了半天时间,整理并记录下来。
数据验证有两种方式,第一种是利用Validateable接口的validate()方法进行数据验证,利用
ValidateAware接口的方法存储和获取错误信息;第二种方法是直接利用validate拦截器,这是一套验证框架。
本文主要讲解利用验证框架进行验证,参考http://java.chinaitlab.com/Struts/775522.html
-
写Action类。注意,必须继承ActionSupport类,不然无法将错误信息显示在前台。(因为ActionSupport类实现了ValidateAware接口,能显示错误信息)
Action类没有特别要注意的地方。
-
在struts.xml中配置这个Action类。
注意: 1)必须添加 result的name属性,转至登陆页面;
2) namespace的值跟后面的的登录页面.jsp中的namespace保持一致。
前1,2步跟基本入门实例保持一致。
3. 编写验证配置文件。
1)命名为:<Action的类名>-validation.xml, 放在/classes文件下。
2)xwork-validator-1.0.2.dtd 放进Tomcat7/bin下面。
3) 验证内容如下所示:
<?xmlversion="1.0" encoding="UTF-8"?>
<!DOCTYPEvalidators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"xwork-validator-1.0.2.dtd">
<validators>
<fieldname="msg">
<field-validatortype="requiredstring">
<message>plsinput an user msg.</message>
</field-validator>
</field>
<fieldname="age">
<field-validatortype="int">
<paramname="min">18</param>
<paramname="max">50</param>
<message>mustgreater than 18 and less than 50.</message>
</field-validator>
</field>
</validators>
其他验证方式,除[requiredstring、int],见说明。
-
编写登录页面login.jsp
<%@page language="java" import="java.util.*"pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>datavalidatatiuon</title>
</head>
<body>
<s:formaction="Validate" namespace="/">
<s:textfieldname="msg" label="msg"/>
<s:textfieldname="age" label="age"/>
<s:fielderrorcssStyle="color: red"></s:fielderror>
<s:submit/>
</s:form>
</body>
</html>
注意:namespace的值与struts.xml中保持一致。
5. 测试页面,当输入不符合条件,会有红色字体提示。