项目介绍
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文件...
基于改进YOLOv5s的森林烟火检测算法.pdf
人力资源管理工具绩效考核excel模板01
施工班组长绩效考核表
57 -营业部经理绩效考核表1
XX公司行政部绩效考核指标
1、文件内容:ant-apache-xalan2-1.9.4-2.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/ant-apache-xalan2-1.9.4-2.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
部门绩效考核表模板(基于KPI以月度为例2)
11-6-质检员绩效考核表(含自动计算、等级评价及任意设置等级)
2024最新全国河流湖泊矢量数据 【数据介绍】 2024年中国河流湖泊数据 一份包含中国境内所有主要河流和湖泊的地理信息数据。 数据格式:Shapefile:广泛使用的GIS数据格式,方便在各类GIS软件中使用。 数据获取:访问OpenStreetMap官网,通过导出工具选择中国区域并下载所需的数据。 使用Geofabrik等第三方网站,可以下载预处理好的中国区域的OSM数据。 数据使用:GIS软件:如QGIS、ArcGIS等,用户可以在这些软件中导入OSM数据进行可视化、分析和编辑。 数据应用: 环境研究:分析河流湖泊的水质变化,研究水资源分布及其环境影响。 城市规划:用于规划城市水系、洪水防控、水资源管理等。 导航和旅游:为河流湖泊的导航和旅游路线规划提供数据支持。 科研:为水文地理研究、生态保护、气候变化等领域提供基础数据。 数据特点: 实时更新:OSM数据由全球用户贡献,具有较高的实时性和更新频率。 开放性:所有数据都在开放许可下发布,允许用户自由使用、修改和分发。 详细性:由于全球志愿者的不断努力,数据细节较为丰富,涵盖了从主要河流湖泊到小型水体的广泛范围。 数据时间2024年5月,shp格式,数据来源OpenStreetMap。 OpenStreetMap(OSM)介绍: 一个开放的、免费的、全球性的地图项目,由全球的志愿者和地图爱好者们共同创建和维护。 OSM的数据包括道路、建筑、公园、河流、湖泊等各类地理信息。由于是由众多志愿者共同编辑,OSM的数据具有很高的实时性和详细程度,特别是在一些活跃的区域,地图数据的更新速度和精度往往超过商业地图服务。 用户可以直接在OSM官网下载地图数据,数据格式主要有OSM XML和PBF等。此外,还有一些第三方网站和工具提供更加便捷的数据下载和处理服务,如Geofabrik、Overpass API等。 OSM的数据可以在各种GIS软件中使用,如QGIS、ArcGIS等。此外,还可以使用Python的OSMnx、GeoPandas等库进行编程处理,或者通过Leaflet、Mapbox等JavaScript库将OSM数据集成到web地图应用中。 OSM的所有数据都在开放许可下发布,允许用户自由使用、修改和分发。这使得OSM成为了许多公共项目、研究机构和商业公司的重要数据来源。
部门绩效考核评分表
12-11-运输车队长绩效考核表(含自动计算、等级评价)
1、文件内容:ant-javadoc-1.9.4-2.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/ant-javadoc-1.9.4-2.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
springboot整合 freemarker方法
1、文件内容:apache-commons-codec-1.8-7.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/apache-commons-codec-1.8-7.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
《旅游抽样调查资料》是反映入境游客在华(内地)花费和国内居民国内旅游情况的资料性年刊,分为上下两篇。 上篇为在华(内地)停留时间在3个月以内的入境游客抽样调查资料,由综合分析报告和调查分类数据两部分组成,分类数据包括:入境游客的主要特征,入境外国人、港澳台同胞的花费水平和花费构成、在境内的停留时间以及入境次数、流向和对住宿单位的选择等。 下篇为国内旅游抽样调查资料,汇集了对城镇居民和农村居民的国内旅游抽样调查结果,共分为四个部分:第一部分为综合分析报告;第二部分为国内旅游出游及花费情况;第三部分为城镇居民国内旅游抽样调查分类数据;第四部分为农村居民国内旅游抽样调查分类数据。
1、表单界面,身份证信息保存在dbf表中,供vfp应用使用,可导出为xls电子表格。 2、提供了身份证过期校验和查询功能。