Struts2中的多个验证方法的共存细节一
在Struts2中默认的,使用validateAbc()作为abc()的验证方法
所以,如果还存在xyz()方法的话,那么它的验证方法就是validateXyz()方法
执行时,首先执行validateAbc()方法
而无论validateAbc()方法执行后的结果如何,都会去执行validate()方法
也就是说,如果一个Action中提供validate()方法的话,那么它是一定会被执行的
执行完validate()之后,如果没有发现存在Field或者Action级别的ERROR的话
那么才会执行相应的业务逻辑的方法,如abc()方法
Struts2中的多个验证方法的共存细节二
很显然这种机制不是很合理。因为不同的业务逻辑存在着不同的验证方式
如果不同的验证方式验证完之后,还要去验证一下validate()的话,显然这是不合理的
这种情况下有两种解决的策略
1..不再复写validate()方法,由于父类的validate()方法的方法体是空的
尽管它也会被调用,但是它什么也不会做,不会对我们的程序造成任何影响
2..重命名validate()方法,即命名为validateExecute()
所以本例若需执行execute()的话,则可通过validateExecute()验证表单
提示Struts2的默认错误信息
如果int或long发生类型转换错误的话,Struts2会将该属性值自动设为零
如果String发生类型转换错误的话,它会将该属性值自动设为null
但若前台页面输入的age是字符串的话,那么它是无法转换成int型的
这时在前台页面就会提示Invalid field value for field "age".信息
在这个错误提示信息中的age对应的是前台页面中<input name="">为age的值
这是因为Struts2在遇到类型转换错误的时候,也就是说无法进行类型转换的时候
struts2框架会自动生成一条错误信息,并将该错误信息放到addFieldError()中
然后就可以通过全局或局部的国际化资源转换文件来自定义更为人性化的错误提示信息
然后就可以在前台使用<s:fielderror/>标签输出资源文件中自定义的错误提示信息
另外,在Struts1.x中若想在页面中提示关于表单填写的信息,则要增加<html:errors/>标签
全局的国际化资源转换文件自定义Struts2提示的错误信息
类型转换出现错误时Struts2中的conversionError拦截器负责将错误封装成表单错误中的Fielderror
在xwork-2.0.4.jar中的com.opensymphony.xwork2包里面有一个xwork-messages.properties文件
将它里面的xwork.default.invalid.fieldvalue属性在资源文件中覆盖就可以输出人性化的信息了
在struts.xml中配置了message.properties之后,就可以建立该文件了
建好后输入xwork.default.invalid.fieldvalue={0}error
由于是进行资源转换,所以xwork.default.invalid.fieldvalue写法是固定的
而{0}则对应前台页面中<inputname="">里面的name值
比如在age输入域中输入字符串之后,就会提示ageerror
如果在birthday输入域中输入字符串的话,同样会提示birthdayerror
局部的国际化资源转换文件
全局的资源文件有些时候并不是特别好用,因为它显示的效果过于单一枯板
而Struts2也已经认识到了这一点,因此它又给我们提供了使用局部的资源文件的方式
局部的国际化资源转换文件也是在项目开发中使用的最多的
虽然它显得比较麻烦,但是它能够为用户提供一种更友好的视图表现方式
局部的资源文件必须与它所要验证的类在同一个目录下,并且要与类同名
比如验证RegisterAction的某些属性,那么它必须与RegisterAction位于同一目录下
并且的它名字也必须是RegisterAction.properties,然后编辑它的内容
比如相对于age属性来说invalid.fieldvalue.age=ageconversionerror
其中invalid.fieldvalue.是固定的,后面跟RegisterAction类中的属性
所以这句话的意思就是:当age发生类型转换错误时,则显示age conversion error信息
并且局部的先级要高于全局的国际化资源转换文件,所以将优先显示局部资源文件中的提示信息
下面是示例工程,这是一个Struts2.0.11应用
首先是web.xml文件
然后是用于提供表单输入的validateInput.jsp页面
当表单输入域均正确时显示的validateSuccess.jsp页面
然后是struts.xml文件
用到的核心验证逻辑的ValidateInputAction.java
用到的局部的国际化资源转换文件ValidateInputAction.properties
用到的全局的国际化资源转换文件message.properties
分享到:
相关推荐
输入校验的流程在Struts2中是结构化的,涉及多个步骤: 1. **类型转换**:首先,Struts2框架使用类型转换器将HTTP请求中的字符串参数转换为相应的Java类型,如Integer、Date等,并将这些值设置为Action类的属性。 ...
在Struts2中,输入校验是确保数据安全、准确和有效的重要环节。本篇文章将深入探讨Struts2的输入校验机制及其相关知识点。 **输入校验的重要性** 输入校验是Web应用开发中的关键步骤,它可以防止恶意用户提交无效或...
struts2的输入校验有两种方式: 一.重写validate()方式 二.采用配置文件的方式 先我们就以一个简单的登录的例子来讲解这个吧. 重点讲解下,第二个采用配置文件的方式: 1.添加一个xml的校验文件,保存在...
本文将深入探讨Struts2中的输入校验机制,以及如何对指定方法进行输入校验。 在Struts2中,输入校验通常分为两种方式:客户端校验和服务器端校验。客户端校验主要通过JavaScript在用户端进行,可以提供即时反馈,但...
在Struts2中,输入校验是一个至关重要的部分,它确保了用户从客户端提交的数据符合预设的业务规则,从而避免了无效或不合法数据进入系统。本篇文章将详细介绍如何在Struts2中进行输入校验,包括两种主要实现方式:...
本文将深入探讨Struts2中的输入校验机制,帮助开发者更好地理解和应用。 一、Struts2输入校验概述 在Struts2中,输入校验主要用于验证用户通过表单提交的数据,防止无效或恶意数据进入系统。Struts2提供了多种方式...
在Struts2中,输入校验是确保用户提交的数据符合预设规范的重要环节,可以防止非法数据进入系统,保护数据的完整性和安全性。本文将详细探讨Struts2中的输入校验机制。 首先,Struts2提供了两种主要的校验方式:...
在Struts2中,输入校验是确保数据完整性和安全性的重要环节。输入校验可以防止恶意用户提交无效或有害的数据,并确保应用程序的稳定运行。以下是关于Struts2输入校验的详细知识: 1. **客户端校验**: 客户端校验...
在Struts2中,用户输入验证是确保数据安全性和应用稳定性的重要环节。本教程将详细介绍如何在Struts2框架下进行用户输入的验证。 用户输入验证是为了确保从客户端接收到的数据符合预期格式和要求,防止非法或恶意的...
在本文中,我们将深入探讨Struts2的输入校验功能,包括手动输入校验和基于验证框架的输入校验。 ### 一、手动输入校验 1. **普通处理方式**: - 在Action类中,你可以重写`validate()`方法,该方法会在业务逻辑...
在Struts2中,校验器(Validator)是处理用户输入验证的核心组件,确保提交到服务器的数据符合预设的业务规则。这篇博客文章可能是关于如何使用Struts2的内置校验机制以及自定义校验规则的探讨。 Struts2的校验框架...
本篇文章将深入探讨Struts2中的输入校验机制。 一、Struts2 输入校验概述 Struts2提供了多种进行输入校验的方式,包括Action级别校验、Validator框架校验、拦截器校验以及使用JSR303/JSR349 Bean Validation标准。...
- 在Struts2中,服务器端校验通常使用Action类的属性注解或者基于XML的配置文件来完成。 - 使用注解如`@NotEmpty`, `@Size`, `@Min`, `@Max`等,可以直接在Action类的成员变量上定义校验规则。 - 基于XML的校验...
java,struts2的输入校验总结大全
在Struts2中,数据校验是一项至关重要的功能,它确保了用户提交的数据符合预定义的规则和格式,从而提高应用的安全性和数据质量。下面我们将详细探讨Struts2中的数据校验机制。 首先,数据校验是Web应用开发中的...
Struts 2 输入校验