`
yongjian1092
  • 浏览: 40758 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Struts2数据校验

阅读更多

一. 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 数据校验

    Struts2 数据校验是Java Web开发中一个关键的组件,它主要用于确保用户提交的数据符合预定义的规则,从而防止无效数据对系统造成影响。Struts2提供了强大的数据验证框架,使得开发者能够方便地实现客户端和服务器端...

    struts2数据校验

    Struts2框架提供了强大的数据校验机制,能够帮助开发者轻松实现各种复杂的校验逻辑。根据提供的代码示例,我们可以深入探讨Struts2中的数据校验技术。 ### Struts2数据校验原理 Struts2的数据校验主要通过配置文件...

    Struts2数据校验与国际化

    在“Struts2数据校验与国际化”这一主题中,我们将深入探讨Struts2如何通过不同的验证机制确保数据的有效性,以及如何通过国际化功能提供多种语言的用户体验。 首先,数据校验是任何Web应用程序中的关键环节,它...

    Struts 2 数据校验功能及校验问题的解决方案

    在Struts 2中,数据校验是实现业务逻辑的重要组成部分,确保输入的数据符合预设规则,从而提高应用程序的稳定性和安全性。数据校验功能是通过Struts 2的ActionSupport类和其他相关组件来实现的。 首先,...

    Struts2 校验器

    在Struts2中,校验器(Validator)是处理用户输入验证的核心组件,确保提交到服务器的数据符合预设的业务规则。这篇博客文章可能是关于如何使用Struts2的内置校验机制以及自定义校验规则的探讨。 Struts2的校验框架...

    Struts2简单数据校验源码 20120417

    本资料"Struts2_1100_SimpleDataValiation"提供了关于Struts2简单数据校验的源码,这将有助于我们深入理解Struts2的数据校验机制。 1. **Struts2数据校验框架概述** - Struts2的数据校验框架是基于OGNL(Object-...

    struts2 简单数据校验

    这篇博客“Struts2 简单数据校验”可能详细介绍了如何在Struts2框架中实现对用户输入的有效性验证。 数据校验是任何Web应用程序中的核心部分,它涉及到多个方面,如必填字段、数据类型检查、长度限制、格式验证等。...

    Struts2中的validation_多国语言版 国际化i18n+struts2数据校验.zip

    在Struts2中,数据校验是确保输入数据有效性和安全性的重要环节。本资料包聚焦于Struts2中的数据校验以及国际化(i18n)支持。 首先,我们来探讨"Struts2中的validation_多国语言版",这是Struts2的数据校验功能。...

    Struts2简单数据校验源码

    本资料“Struts2_1100_SimpleDataValiation.rar”提供了关于Struts2简单数据校验的源码示例。 首先,Struts2的数据校验主要依赖于两个核心组件:Validation拦截器和Validator框架。Validation拦截器在Action执行前...

    Struts2输入校验总结

    在Struts2框架中,输入校验是确保数据完整性和安全性的重要环节。对于手动输入完成校验,Struts2提供了灵活的机制。 1. **普通处理方式**:在Action类中重写`validate()`方法是最常见的做法。此方法允许开发者...

    struts2输入校验

    本文将深入探讨Struts2中的输入校验机制,以及如何对指定方法进行输入校验。 在Struts2中,输入校验通常分为两种方式:客户端校验和服务器端校验。客户端校验主要通过JavaScript在用户端进行,可以提供即时反馈,但...

    struts2数据校验框架学习

    NULL 博文链接:https://code.iteye.com/blog/279065

    struts2的数据校验

    在Struts2中,数据校验是一项至关重要的功能,它确保了用户提交的数据符合预定义的规则和格式,从而提高应用的安全性和数据质量。下面我们将详细探讨Struts2中的数据校验机制。 首先,数据校验是Web应用开发中的...

    struts2.0的数据校验框架struts2.0的数据校验框架

    struts2.0的数据校验框架struts2.0的数据校验框架struts2.0的数据校验框架struts2.0的数据校验框架

    struts2 基本校验(配置文件形式)

    在Struts2中,数据校验是一个重要的功能,用于确保用户输入的数据符合业务规则和安全标准。在本案例中,我们将探讨如何使用配置文件形式进行基本的Struts2数据校验。 一、Struts2验证框架概述 Struts2的验证框架...

    struts2输入校验深入总结

    Struts2的Interceptor(拦截器)允许在Action执行前进行数据校验。例如,`ValidationInterceptor`是一个内置的拦截器,它使用Action级别的注解进行校验。如果校验失败,会将错误信息存入ActionContext,然后跳转到...

Global site tag (gtag.js) - Google Analytics