一. 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">
<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> (此处i18n,不是l,是1)
或者也可以在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 简单数据校验”可能详细介绍了如何在Struts2框架中实现对用户输入的有效性验证。 ...
在Struts2中,数据校验是一项至关重要的功能,它确保了用户提交的数据符合预定义的规则和格式,从而提高应用的安全性和数据质量。下面我们将详细探讨Struts2中的数据校验机制。 首先,数据校验是Web应用开发中的...
在Struts2中,数据校验是确保输入数据正确性和完整性的关键环节,它可以帮助开发者预防潜在的数据错误,提高应用的健壮性。本资料"Struts2_1100_SimpleDataValiation"提供了关于Struts2简单数据校验的源码,这将有助...
struts2.0的数据校验框架struts2.0的数据校验框架struts2.0的数据校验框架struts2.0的数据校验框架
在Struts2中,校验器(Validator)是处理用户输入验证的核心组件,确保提交到服务器的数据符合预设的业务规则。这篇博客文章可能是关于如何使用Struts2的内置校验机制以及自定义校验规则的探讨。 Struts2的校验框架...
在Struts2中,数据校验是一个重要的功能,它确保了从用户界面接收到的数据符合业务规则,从而避免了无效或错误的数据进入系统。本资料“Struts2_1100_SimpleDataValiation.rar”提供了关于Struts2简单数据校验的源码...
在Struts 2中,数据校验是实现业务逻辑的重要组成部分,确保输入的数据符合预设规则,从而提高应用程序的稳定性和安全性。数据校验功能是通过Struts 2的ActionSupport类和其他相关组件来实现的。 首先,...
struts2.0的数据校验struts2.0的数据校验struts2.0的数据校验struts2.0的数据校验struts2.0的数据校验struts2.0的数据校验
通过这种方式,开发者可以轻松地在Struts2中实现输入校验,既保证了数据的正确性,又提高了应用的安全性。不仅如此,Struts2的灵活性还允许开发者扩展和定制自己的校验器,以满足不同项目的需求。总的来说,Struts2...
输入校验的流程在Struts2中是结构化的,涉及多个步骤: 1. **类型转换**:首先,Struts2框架使用类型转换器将HTTP请求中的字符串参数转换为相应的Java类型,如Integer、Date等,并将这些值设置为Action类的属性。 ...
在Struts2中,数据校验是确保输入数据有效性和安全性的重要环节。本资料包聚焦于Struts2中的数据校验以及国际化(i18n)支持。 首先,我们来探讨"Struts2中的validation_多国语言版",这是Struts2的数据校验功能。...
在Struts2中,数据校验主要分为三类: 1. `validate()` 方法校验:这是最基本的验证方式,通常在Action类中定义。当用户提交表单时,Struts2会自动调用该方法,对所有字段进行验证。开发者可以在该方法中编写自定义...
根据提供的代码示例,我们可以深入探讨Struts2中的数据校验技术。 ### Struts2数据校验原理 Struts2的数据校验主要通过配置文件(通常为XML格式)进行定义,这些配置文件指定了哪些字段需要校验,以及具体的校验...
与Struts1相比,Struts2具有显著的优势,包括更少的侵入性设计、支持AOP编程的拦截器、类型转换器、多样的表现层技术以及更灵活的数据校验机制。 首先,Struts2的无侵入式设计使得应用程序不再紧密依赖Servlet API...
在Struts2中,类型转换和数据校验是两个关键的特性,它们确保了用户输入的数据能够准确无误地被处理和验证,从而提高了应用的安全性和可靠性。 **类型转换(Type Conversion)** 在Struts2中,类型转换是自动进行...
Struts2 数据校验是Java Web开发中一个重要的实践领域,尤其对于保证应用程序的数据质量和安全性至关重要。Struts2,作为一款流行的MVC框架,提供了一套强大的数据验证机制,允许开发者在用户输入提交到服务器之前...
在Struts2中,输入校验是确保用户提交的数据符合预设规范的重要环节,可以防止非法数据进入系统,保护数据的完整性和安全性。本文将详细探讨Struts2中的输入校验机制。 首先,Struts2提供了两种主要的校验方式:...
Struts2 数据校验是Java Web开发中一个关键的组件,它主要用于确保应用程序接收到的数据是合法、有效的,从而防止因用户输入错误或恶意数据导致的问题。Struts2框架提供了强大的数据验证机制,使得开发者可以方便地...
本文将深入探讨Struts2中的输入校验机制,以及如何对指定方法进行输入校验。 在Struts2中,输入校验通常分为两种方式:客户端校验和服务器端校验。客户端校验主要通过JavaScript在用户端进行,可以提供即时反馈,但...