一. ActionSupport是个工具类,他实现了Action, Validatable等接口,
Validatable提供validate()方法进行数据验证.Action只要继承ActionSupport类,重写validate()方法就可以进行数据验证
二.
校验的流程
首先,Struts框架对输入数据进行类型转换,然后再进行数据校验,如果类型转换与数据校验都没有错误发生,
就进入execute(),否则请求将被转发到input视图
三. 注册实例
1. register.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<s:form action="register" method="post">
<s:textfield name="name" label="姓名" required="true" />
<s:textfield name="age" label="年龄" required="true" />
<s:submit value="提交"></s:submit>
</s:form>
</body>
</html>
2.当姓名和年龄提交时候,用RegistAction类来获取数值:
public class RegistAction extends ActionSupport {
private String name;
private int age;
...//省略name,age的setter,getter方法
public String execute() {
return SUCCESS;
}
public void validate() {
if ("".equals(name)) {
this.addFieldError("name", "用户名不能为空");
}
if (name.length() > 6) {
this.addFieldError("name", "用户名长度不能超过5位");
}
if (age < 1 || age > 150) {
this.addFieldError("age", "年龄范围必须在1~150之间");
}
}
}
3.struts.xml
<package name="test1" extends="struts-default" namespace="test1">
<action name="register1" class="test1.RegistAction">
<result name="input">register.jsp</result>
<result name="success">../success.jsp</result>
</action>
</package>
4.success.jsp
<%@ page contentType="text/html;charset=GBK"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<s:property value="name"/>,欢迎您登录!
如果name和age都不输入,则会执行Action中的校验方法,会提示
用户名不能为空
如果不输入userName, age输入为abc,会提示
Invalid field value
for field "age".
username is empty
1. 其中Invalid field value for field "age"
信息是struts2通过内置的类型转换器进行类型转换时,如果不能成功转换,
struts2框架自动生成一条错误信息,并将该错误信息放到addFieldError里面,这种默认的输出信息格式是在 xwork-2.0.4.jar中定义的.
com/opensymphony/xwork2/xwork-messages.properties文件中有一条xwork.default.invalid.fieldvalue=Invalid
field value for field "{0}".
2.
这是一种全局的错误提示方式,整个系统中只要是字段类型转换错误都会这样提示,我们也可以改变这种输出格式,只要在全局的国际资源文件中重写xwork.default.invalid.fieldvalue就可以了.
实现方式:
在struts.xml中加入<constant
name="struts.custom.i18n.resources"
value="messageResource"></constant>
或者也可以在struts.properties中加入struts.custom.i18n.resources=messageResource
指定国际化资源文件名为messageResource.
Properties
新建messageResource.
Properties资源文件并添加数据xwork.default.invalid.fieldvalue={0}
failure
修改之后字段类型转换错误提示为 : {0} failure
3
所有的类型转换失败后,struts2会将基本类型设置为0,对象类型设置为null,这里的age的类型为Integer,当类型转换失败age值为null,如果age的类型为int,那么转换失败后值为0
4.这种提示信息不够友好,也可以定义局布的提示信息,为每一个Action新建一个properties文件,文件名为XXX.properties(Action名.properties)
实现方式:新建RegistAction.properties并添加
invalid.fieldvalue.age=age
error
invalid.fieldvalue.birthday=birthday
error
其中age和birthday分别为字段的名称
四.Struts2也提供类似BaseDispatchAction的功能
package com;
import com.opensymphony.xwork2.ActionSupport;
public class Regist2Action extends ActionSupport {
private String userName;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String regist() throws Exception {
System.out.println("注册成功-regist");
return SUCCESS;
}
public void validateRegist() {
if(userName.equals("")){
addFieldError("userName", "请输入用户名-registValidate");
}
}
}
<action name="regist2" class="com.Regist2Action" method="regist">
<result name="success">/welcome.jsp</result>
<result name="input">/regist2.jsp</result>
</action>
指定了method为regist,当请求时会执行regist(),不会再去执行默认的execute()方法了,
validateRegist()方法是专门针对regist校验的.(格式为validate+方法名)
分享到:
相关推荐
source 博文链接:https://callan.iteye.com/blog/185418
Struts2数据校验与国际化,有validate()方法校验,有validateXxx()方法校验,有配置文件校验;国际化:有英,香港,内地
这是个struts2的数据校验,很多都非常需要的!
Struts2中的validation_多国语言版 国际化+struts2数据校验.zip
NULL 博文链接:https://chaoyi.iteye.com/blog/2161948
struts2.0的数据校验框架struts2.0的数据校验框架struts2.0的数据校验框架struts2.0的数据校验框架
NULL 博文链接:https://code.iteye.com/blog/279065
Struts2_1100_SimpleDataValiation.rar Struts2简单数据校验源码 Struts2简单数据校验源码
主要介绍了Struts 2 数据校验功能及校验问题的解决方案的相关资料,需要的朋友可以参考下
struts2.0的数据校验struts2.0的数据校验struts2.0的数据校验struts2.0的数据校验struts2.0的数据校验struts2.0的数据校验
struts2的数据校验
Struts2_1100_SimpleDataValiation.rar Struts2简单数据校验源码 Struts2简单数据校验源码
struts2 类型转换 数据校验
NULL 博文链接:https://cdxs2.iteye.com/blog/1926326
struts2表单校验,可单独一行显示
struts2数据验证与国际化 一个PPT,内有很多可看的内容. 朋友还是看看吧!
用tomcat服务器,通过struts.xml写的action来操作网页之间的重定向和对login数据的校验。(分为admin和user的login网页)