项目介绍
Struts 2 极速表单验证框架
- 最快速的后台表单验证框架
- 简洁,快速的验证语法
- 无需编写验证提示信息
- 错误消息在指定地方显示
- 支持组合验证
- 易于扩展
- 基于标准的Java Annotaction添加验证,易于和现有项目的无缝集成
- 特殊应用场景支持,如:密码确认,结束日期必须大于开始日期
- 支持前后台一致的验证规则
为什么使用此框架
一直都在寻找一个简单、好用的Struts2后台验证框,这次终于找到了. struts2-quickvalidation-plugin
示例代码
action演示代码:
package actions;
import com.opensymphony.xwork2.ActionSupport;
import common.validation.FormValidator;
public class HelloWorldAction extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = -8091731438081617401L;
// 或者implements Action {
@FormValidator(input = "form", value = "user.name,用户名,required min-length-5 max-length-10 validate-alpha;"
+ "age,年龄,validate-digits min-value-18 max-value-100;" + "password,密码,required;"
+ "password2,重复密码,required equals-password-原始密码;" + "email,,validate-email;"
+ "gender,性别,validate-one-required;" + "ip,,validate-ip;" + "date,生日,validate-date;"
+ "num1,数字1,validate-number;" + "num2,数字2,validate-number less-than-num1-数字1;"
+ "float,数字范围,float-range-1-10;" + "address,地址,validate-chinese;" + "zip,邮编,validate-zip;"
+ "id_num,身份证,validate-id")
public String form() throws Exception {
return SUCCESS;
}
@FormValidator(input = "form_js", value = "user.name,用户名,required min-length-5 max-length-10 validate-alpha;"
+ "age,年龄,validate-digits min-value-18 max-value-100;" + "password,密码,required;"
+ "password2,重复密码,required equals-password-原始密码;" + "email,,validate-email;"
+ "gender,性别,validate-one-required;" + "ip,,validate-ip;" + "date,生日,validate-date;"
+ "num1,数字1,validate-number;" + "num2,数字2,validate-number less-than-num1-数字1;"
+ "float,数字范围,float-range-1-10;" + "address,地址,validate-chinese;" + "zip,邮编,validate-zip;"
+ "id_num,身份证,validate-id")
public String form_js() throws Exception {
return SUCCESS;
}
@FormValidator(input = "form_tag", value = "user.name,用户名,required min-length-5 max-length-10 validate-alpha;"
+ "age,年龄,validate-digits min-value-18 max-value-100;")
public String form_tag() throws Exception {
return SUCCESS;
}
@FormValidator(input = "none", value = "user.name,用户名,required min-length-5 max-length-10 validate-alpha;"
+ "age,年龄,validate-digits min-value-18 max-value-100;" + "password,密码,required;"
+ "password2,重复密码,required equals-password-原始密码;" + "email,,validate-email;"
+ "gender,性别,validate-one-required;" + "ip,,validate-ip;" + "date,生日,validate-date;"
+ "num1,数字1,validate-number;" + "num2,数字2,validate-number less-than-num1-数字1;"
+ "float,数字范围,float-range-1-10;" + "address,地址,validate-chinese;" + "zip,邮编,validate-zip;"
+ "id_num,身份证,validate-id")
public String form_json() throws Exception {
//测试json格式输出
return SUCCESS;
}
}
对代码的修改
我对代码进行了如下改动:
1. 将原struts2-quickvalidation-plugin工程改成了maven项目
2. 验证器在容器初始化全部加载
3. 自定义实现错误结果输出
原来通过跳转页面,显示错误信信息:
<span class="errorMessage">${validationErrors}</span>
<span class="errorMessage">${errors['user.name'][0]}</span> <br>
现在可以自己实现返回json格式错误信息:
{
"user.name":["用户名的长度不能小于5, 当前长度为1","用户名只能输入英文字母"],
"password":["密码不能为空"],
"password2":["重复密码不能为空"],
"gender":["性别必须至少选中一项"]
}
自定义结果输出实现
编写自己的拦截器:
@SuppressWarnings("serial")
public class JsonOutputInterceptor extends AbstractValidationInterceptor{
//重写父类的错误输出方法
@Override
public String errorOutput(String input) {
// json 格式输出
Map<String, List<String>> errors = getFieldErrors();
// 使用fastjson
String text = JSON.toJSONString(errors);
writeAjaxResult(text);
return input;
}
protected void writeAjaxResult(String s) {
try {
HttpServletResponse response = ServletActionContext.getResponse();
response.getOutputStream().write(s.getBytes("utf-8"));
} catch (Exception e) {
}
}
}
struts.xml配置:
<!-- 返回json验证错误结果 -->
<package name="quickValidation_json" extends="struts-default">
<interceptors>
<interceptor name="quickValidationJsonInterceptor" class="actions.JsonOutputInterceptor" />
<interceptor-stack name="quickValidationStack_json">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="quickValidationJsonInterceptor" />
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="quickValidationStack_json" />
</package>
<package name="test_json" namespace="" extends="quickValidation_json">
<action name="form_json" class="actions.HelloWorldAction" method="form_json" />
</package>
相关演示效果图:
http://localhost/struts2-quickvalidation-demo1.1
跳转页面验证效果:
json格式输出效果:

此框架功能还不是挺全面,还需不断完善,作者的这种验证思路可以运用到其它框架当中. springMvc通过aop加入此验证也是相当不错的。
如果有疑问可以给我留言.

- 大小: 3.5 KB

- 大小: 15.6 KB

- 大小: 15.5 KB
分享到:
相关推荐
Struts2极速表单验证框架正是为了解决这些问题而生,它通过Java注解和验证规则表达式提供了更简单、高效的解决方案。 **4. 验证规则表达式详解** 验证规则表达式是Struts2极速表单验证框架的核心特性之一,它允许...
本知识点将深入探讨Struts2的表单验证框架及其使用方法。 首先,表单验证在Web应用中至关重要,它可以帮助开发者检查用户提交的数据是否有效,避免因非法数据导致的错误。Struts2通过Action类和Validation.xml文件...
首先,介绍Struts2极速表单验证框架的基本概念和特性。该框架是Struts+项目的一部分,计划包含多个子模块,例如极速表单验证框架和权限管理等。它主要关注于提高Struts2框架的生产力,通过基于注解的方式进行增强,...
DNA进化算法及其改进研究样本.doc
内容概要:本文详细介绍了使用Matlab编写的水果识别程序。首先简述了人工智能和机器学习在水果识别领域的应用背景,强调了Matlab作为强大编程环境的优势。接着,文章逐步讲解了水果识别程序的具体实现流程,涵盖数据预处理、特征提取、模型训练以及最终的识别算法实现。每个环节都采用了先进的技术和方法,如图像去噪、大小调整、深度学习算法(特别是卷积神经网络CNN),并通过训练神经网络模型来提升识别精度。此外,还讨论了相关技术手段和技术挑战,展示了Matlab在图像处理和计算机视觉方面的强大能力。 适合人群:对图像处理、机器学习感兴趣的科研人员、学生及工程师。 使用场景及目标:适用于希望深入了解Matlab环境下水果识别程序的设计与实现的研究者;旨在帮助使用者掌握从数据准备到模型部署的一系列技能,为实际项目提供理论支持和技术指导。 其他说明:文中不仅提供了详细的程序实现步骤,还对未来发展方向进行了展望,鼓励更多人参与到水果识别及相关领域的研究中。
scratch少儿编程逻辑思维游戏源码-修复塔.zip
# 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;
scratch少儿编程逻辑思维游戏源码-天空之球.zip
# 压缩文件中包含: 中文-英文对照文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文-英文对照文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;
scratch少儿编程逻辑思维游戏源码-土豆兄弟.zip
scratch少儿编程逻辑思维游戏源码-小鸟冒险.zip
scratch少儿编程逻辑思维游戏源码-跳进火山.zip
scratch少儿编程逻辑思维游戏源码-跳跃引擎.zip
scratch少儿编程逻辑思维游戏源码-旋转(4).zip
scratch少儿编程逻辑思维游戏源码-死里逃生.zip
# 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;
# 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;
HPERP商业软件实施解决方案模板.doc
# 压缩文件中包含: 中文-英文对照文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文-英文对照文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;