第五章 Validation

本文详细介绍了Struts2框架中的校验机制,包括客户端和服务端校验的区别,JavaAnnotation与XML两种配置方式,以及如何利用Validator进行数据校验。通过示例展示了不同类型的校验注解和XML配置的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第五章 Validation

5.1节:校验类型和配置方法说明

Struts2 校验框架在验证的场所上可以分为:客户端校验和服务端校验。

客户端校验是指,在HTML画面上自动生成JavaScript校验代码,在用户提交到服务器之前在客户端浏览器中进行校验。默认位客户端校验。

服务端校验是指,在数据提交到服务器上之后,在Action处理之前,对客户但提交的数据进行校验。

Struts2校验框架的配置上可以分为:Java Annotation配置和XML配置文件配置

Java Annotation配置是指,使用Java Annotation语法,在Java源代码上标记需要校验的内容,和校验的方式。

XML配置文件配置是指,使用XML配置文件配置需要校验的内容和校验方式。

5.2节:ValidatorValidation

Validation指校验,Validator指谁来校验。

Struts2框架中Validator必须在系统中注册,如果没有注册,系统使用默认的注册,这些validator注册文件在xworkjar文件中,内容如下:

<validators>

<validator name="required" class="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator"/>

<validator name="requiredstring" class="com.opensymphony.xwork2.validator.validators.RequiredStringValidator"/>

<validator name="int" class="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator"/>

<validator name="double" class="com.opensymphony.xwork2.validator.validators.DoubleRangeFieldValidator"/>

<validator name="date" class="com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator"/>

<validator name="expression" class="com.opensymphony.xwork2.validator.validators.ExpressionValidator"/>

<validator name="fieldexpression" class="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator"/>

<validator name="email" class="com.opensymphony.xwork2.validator.validators.EmailValidator"/>

<validator name="url" class="com.opensymphony.xwork2.validator.validators.URLValidator"/>

<validator name="visitor" class="com.opensymphony.xwork2.validator.validators.VisitorFieldValidator"/>

<validator name="conversion" class="com.opensymphony.xwork2.validator.validators.ConversionErrorFieldValidator"/>

<validator name="stringlength" class="com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator"/>

<validator name="regex" class="com.opensymphony.xwork2.validator.validators.RegexFieldValidator"/>

</validators>

自己需要注册自己的Validator时,可以使用上述相似的内容,这个文件需要放在WEB-INF/classes目录下,文件的名字叫validators.xml

一旦自己定义了validators.xml文件,系统就不会在加载默认的Validators文件,所以在Validators.xml中需要拷贝默认的内容。

5.3节:ValidationIntercepter

Validation使用名字叫做validatorIntercepter,在默认情况下,struts2已经定义了这个Intercepter,我们在不加声明的情况下就可以使用Validation了。

5.4节:使用Java Annotation配置校验

import com.opensymphony.xwork2.validator.annotations包提供了一些必要的Annotation用来配置校验信息。

这些内容包括:

枚举类型

ValidatorType

Field 校验字段

Simple 校验其他

Annotation(标注)类型

Validation

用来标记一个类需要被校验

ConversionErrorFieldValidator

字段转换出错

DateRangeFieldValidator

日期范围校验

DoubleRangeFieldValidator

Double类型范围校验

EmailValidator

Email地址校验

ExpressionValidator

使用一个OGNL表达式的校验,功能非常强大

FieldExpressionValidator

针对一个字段的使用OGNL表达式的校验

IntRangeFieldValidator

Int类型范围校验

RegexFieldValidator

正则表达式校验

RequiredFieldValidator

必填字段校验

RequiredStringValidator

必填String校验,

StringLengthFieldValidator

字符串长度校验

UrlValidator

URL校验

Validations

可以组合上述的各种校验类型以满足更多的需求。

VisitorFieldValidator

可以将Action中的对象的属性的校验方法定位到已经定义的对象原有的校验方法

CustomValidator

ValidationParameter

两个类一起完成自定义的校验

示例:

package com.jpleasure;

import com.opensymphony.xwork2.ActionSupport;

import com.opensymphony.xwork2.validator.annotations.FieldExpressionValidator;

import com.opensymphony.xwork2.validator.annotations.RequiredFieldValidator;

import com.opensymphony.xwork2.validator.annotations.StringLengthFieldValidator;

import com.opensymphony.xwork2.validator.annotations.Validation;

import com.opensymphony.xwork2.validator.annotations.ValidatorType;

@Validation()

public class RegisterAction extends ActionSupport {

private String name;

private String password;

private String rePassword;

private String mail;

private String description;

public String getName() {

return name;

}

@RequiredFieldValidator(type = ValidatorType.FIELD,

shortCircuit = true, message = "name is required")

public void setName(String name) {

this.name = name;

}

public String getPassword() {

return password;

}

@RequiredFieldValidator(type = ValidatorType.FIELD,

shortCircuit = true, message = "password is required")

@StringLengthFieldValidator(type = ValidatorType.FIELD,

shortCircuit = true, message = "password must has proper legnth",

minLength = "5", maxLength = "12")

public void setPassword(String password) {

this.password = password;

}

public String getRePassword() {

return rePassword;

}

@RequiredFieldValidator(type = ValidatorType.FIELD,

shortCircuit = true,

message = "input password again please!")

@StringLengthFieldValidator(type = ValidatorType.FIELD,

shortCircuit = true, message = "password must has proper legnth",

minLength = "5", maxLength = "12")

@FieldExpressionValidator(expression = "password eq rePassword",

message = "two password must match")

public void setRePassword(String rePassword) {

this.rePassword = rePassword;

}

public String getMail() {

return mail;

}

@RequiredFieldValidator(type = ValidatorType.FIELD,

shortCircuit = true, message = "mail is required")

public void setMail(String mail) {

this.mail = mail;

}

public String getDescription() {

return description;

}

@RequiredFieldValidator(type = ValidatorType.FIELD,

shortCircuit = true, message = "description is required")

public void setDescription(String description) {

this.description = description;

}

public String execute() throws Exception {

return SUCCESS;

}

}

5.5节:使用XML配置Validation

Xml配置文件与Action的关系为:

SomeAction.java – SomeAction-validation.xml

且与SomeAction.class处在相同的目录中。

SimpleAction-validation.xml文件示例:

<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"

"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">

<validators>

<field name="bar">

<field-validator type="required">

<message>You must enter a value for bar.</message>

</field-validator>

<field-validator type="int">

<param name="min">6</param>

<param name="max">10</param>

<message>

bar must be between ${min} and ${max}, current value is ${bar}.

</message>

</field-validator>

</field>

<field name="bar2">

<field-validator type="regex">

<param name="regex">[0-9],[0-9]</param>

<message>

The value of bar2 must be in the format "x, y", where x and y are between 0 and 9

</message>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值