`
Callan
  • 浏览: 736593 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

struts2 数据校验

阅读更多

一. ActionSupport是个工具类,他实现了Action, Validatable等接口, Validatable提供validate()方法进行数据验证.Action只要继承ActionSupport类,重写validate()方法就可以进行数据验证

二. 校验的流程
     首先,Struts框价对输入数据进行类型转换,然后再进行数据校验,如果类型转换与数据校验都没有错误发生, 就进入execute(),否则请求将被转发到input视图

三. 注册实例
    首先新建RegistAcion.java

   

package com;



import java.util.Date;



import com.opensymphony.xwork2.ActionSupport;



public class RegistAction extends ActionSupport {



	private String userName;

		

	private Integer age;

	

	private Date birthday;

	

	public String getUserName() {

		return userName;

	}



	public void setUserName(String userName) {

		this.userName = userName;

	}



	public Integer getAge() {

		return age;

	}



	public void setAge(Integer age) {

		this.age = age;

	}



	public Date getBirthday() {

		return birthday;

	}



	public void setBirthday(Date birthday) {

		this.birthday = birthday;

	}



	@Override

	public String execute() throws Exception {

		System.out.println("注册成功");

		return SUCCESS;

	}



	@Override

	public void validate() {

		if("".equals(userName)){

			addFieldError("userName", "username is empty");

		}

		if(null != age){

			if(1 > age || 150 < age){

				addFieldError("age", "age invalid");

			}

		}

	}

}

 配置Action

<action name="regist" class="com.RegistAction" method="regist">

      <result name="success">/welcome.jsp</result>

      <result name="input">/regist.jsp</result>

 </action>

 接着是注册页面和注册成功页面

regist.jsp

<body>

  	<form action="regist.action" method="post">

  		<s:fielderror></s:fielderror>

  		<table>

  			<tr>

  				<td>userName:</td>

  				<td>

  					<input type="text" name="userName">

  				</td>

  			</tr>

  			<tr>

  				<td>age:</td>

  				<td>

  					<input type="text" name="age">

  				</td>

  			</tr>

  			<tr>

  				<td>birthday:</td>

  				<td>

  					<input type="text" name="birthday">

  				</td>

  			</tr>

  			<tr>

  				<td colspan="2">

  					<s:submit value="注册"></s:submit>

  				</td>

  			</tr>

   	</form>

  </body>

 如果不输入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+方法名)

11
5
分享到:
评论
3 楼 congpeixue 2008-04-22  
那个是配置文件。
2 楼 Callan 2008-04-22  
不好意思 ,那是struts.xml的配置文件
1 楼 wanwok 2008-04-22  
Html代码 这个写错了吧,刚刚我开始觉得这么怪,怎么HTML代码里会有
<action name="regist2" class="com.Regist2Action" method="regist"> 
 
            <result name="success">/welcome.jsp</result> 
 
            <result name="input">/regist2.jsp</result> 
 
</action> 
<action>标签了.

struts2.0怎么这么变态/

相关推荐

    Struts2数据校验

    Struts2 数据校验是Java Web开发中一个重要的实践领域,尤其对于保证应用程序的数据质量和安全性至关重要。Struts2,作为一款流行的MVC框架,提供了一套强大的数据验证机制,允许开发者在用户输入提交到服务器之前...

    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