一. 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+方法名)
分享到:
相关推荐
Struts2 数据校验是Java Web开发中一个关键的组件,它主要用于确保用户提交的数据符合预定义的规则,从而防止无效数据对系统造成影响。Struts2提供了强大的数据验证框架,使得开发者能够方便地实现客户端和服务器端...
Struts2框架提供了强大的数据校验机制,能够帮助开发者轻松实现各种复杂的校验逻辑。根据提供的代码示例,我们可以深入探讨Struts2中的数据校验技术。 ### Struts2数据校验原理 Struts2的数据校验主要通过配置文件...
在“Struts2数据校验与国际化”这一主题中,我们将深入探讨Struts2如何通过不同的验证机制确保数据的有效性,以及如何通过国际化功能提供多种语言的用户体验。 首先,数据校验是任何Web应用程序中的关键环节,它...
在Struts 2中,数据校验是实现业务逻辑的重要组成部分,确保输入的数据符合预设规则,从而提高应用程序的稳定性和安全性。数据校验功能是通过Struts 2的ActionSupport类和其他相关组件来实现的。 首先,...
在Struts2中,校验器(Validator)是处理用户输入验证的核心组件,确保提交到服务器的数据符合预设的业务规则。这篇博客文章可能是关于如何使用Struts2的内置校验机制以及自定义校验规则的探讨。 Struts2的校验框架...
本资料"Struts2_1100_SimpleDataValiation"提供了关于Struts2简单数据校验的源码,这将有助于我们深入理解Struts2的数据校验机制。 1. **Struts2数据校验框架概述** - Struts2的数据校验框架是基于OGNL(Object-...
这篇博客“Struts2 简单数据校验”可能详细介绍了如何在Struts2框架中实现对用户输入的有效性验证。 数据校验是任何Web应用程序中的核心部分,它涉及到多个方面,如必填字段、数据类型检查、长度限制、格式验证等。...
在Struts2中,数据校验是确保输入数据有效性和安全性的重要环节。本资料包聚焦于Struts2中的数据校验以及国际化(i18n)支持。 首先,我们来探讨"Struts2中的validation_多国语言版",这是Struts2的数据校验功能。...
本资料“Struts2_1100_SimpleDataValiation.rar”提供了关于Struts2简单数据校验的源码示例。 首先,Struts2的数据校验主要依赖于两个核心组件:Validation拦截器和Validator框架。Validation拦截器在Action执行前...
在Struts2框架中,输入校验是确保数据完整性和安全性的重要环节。对于手动输入完成校验,Struts2提供了灵活的机制。 1. **普通处理方式**:在Action类中重写`validate()`方法是最常见的做法。此方法允许开发者...
本文将深入探讨Struts2中的输入校验机制,以及如何对指定方法进行输入校验。 在Struts2中,输入校验通常分为两种方式:客户端校验和服务器端校验。客户端校验主要通过JavaScript在用户端进行,可以提供即时反馈,但...
NULL 博文链接:https://code.iteye.com/blog/279065
在Struts2中,数据校验是一项至关重要的功能,它确保了用户提交的数据符合预定义的规则和格式,从而提高应用的安全性和数据质量。下面我们将详细探讨Struts2中的数据校验机制。 首先,数据校验是Web应用开发中的...
struts2.0的数据校验框架struts2.0的数据校验框架struts2.0的数据校验框架struts2.0的数据校验框架
在Struts2中,数据校验是一个重要的功能,用于确保用户输入的数据符合业务规则和安全标准。在本案例中,我们将探讨如何使用配置文件形式进行基本的Struts2数据校验。 一、Struts2验证框架概述 Struts2的验证框架...
Struts2的Interceptor(拦截器)允许在Action执行前进行数据校验。例如,`ValidationInterceptor`是一个内置的拦截器,它使用Action级别的注解进行校验。如果校验失败,会将错误信息存入ActionContext,然后跳转到...