`
wenjinglian
  • 浏览: 824601 次
  • 性别: Icon_minigender_1
  • 来自: 株洲->深圳
社区版块
存档分类
最新评论

Struts2极速表单验证框架(注解)

阅读更多

 

项目介绍

Struts 2 极速表单验证框架

 

  • 最快速的后台表单验证框架
  • 简洁,快速的验证语法
  • 无需编写验证提示信息
  • 错误消息在指定地方显示
  • 支持组合验证
  • 易于扩展
  • 基于标准的Java Annotaction添加验证,易于和现有项目的无缝集成
  • 特殊应用场景支持,如:密码确认,结束日期必须大于开始日期
  • 支持前后台一致的验证规则

作者:刘长炯 beansoft http://www.beansoft.biz/ 


为什么使用此框架

一直都在寻找一个简单、好用的Struts2后台验证框,这次终于找到了. struts2-quickvalidation-plugin

我觉得比起之前的:http://nassir.iteye.com/admin/blogs/1474026 介绍的都好用。

如何使用请下载原作者详细说明文档:Struts2QuickValidation.pdf

示例代码

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>
 

框架代码:struts2-quickvalidation


相关演示效果图:
http://localhost/struts2-quickvalidation-demo1.1

跳转页面验证效果:


 
json格式输出效果:

 

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

如果有疑问可以给我留言.



 

 

  • 大小: 3.5 KB
  • 大小: 15.6 KB
  • 大小: 15.5 KB
分享到:
评论

相关推荐

    Struts2 极速表单验证框架(说明+demo)

    本知识点将深入探讨Struts2的表单验证框架及其使用方法。 首先,表单验证在Web应用中至关重要,它可以帮助开发者检查用户提交的数据是否有效,避免因非法数据导致的错误。Struts2通过Action类和Validation.xml文件...

    struts2验证框架

    Struts2 验证框架详解 Struts2 验证框架是基于 Java 语言的 Web 应用程序框架,提供了一个强大的验证机制,以确保用户输入的数据满足业务逻辑的要求。在 Struts2 中,验证机制是通过 validator 来实现的,该机制...

    struts2官方例子7-表单验证 xml形式的验证

    总结起来,Struts2的XML表单验证是通过创建XML文件定义验证规则,然后在Action类中处理数据,通过框架自动进行验证并返回错误信息。这种方式使得验证逻辑与业务逻辑分离,提高了代码的可维护性和复用性。对于大型...

    Struts2表单验证

    本文将深入探讨Struts2的表单验证机制。 首先,Struts2的输入验证分为两种方式:手动验证和使用验证框架。 **手动验证**主要包括两种方法: 1. **重写validate()方法**:这是最基础的方式,所有Action类都需要继承...

    Struts1的validator验证框架

    其中,Validator框架是Struts1用于客户端和服务端表单验证的强大工具,它能显著提高数据处理的安全性和准确性。本文将深入探讨Struts1 Validator框架的核心概念、配置与实现细节。 #### 一、Struts1 Validator框架...

    struts的表单验证

    在Struts中,可以通过添加JavaScript代码到JSP页面,或者使用Struts2的验证框架生成客户端脚本来实现。但是,客户端验证不能完全替代服务器端验证,因为它容易被恶意用户绕过。 2. 服务器端验证: 服务器端验证是...

    struts2验证框架简单示例

    在Struts2中,验证框架是处理用户输入验证的关键部分,它确保了从客户端接收到的数据的质量和准确性。本示例将深入探讨Struts2验证框架的基本用法,特别适合初学者理解和掌握。 ### 一、Struts2验证框架概述 ...

    struts2验证框架示例

    这个“struts2验证框架示例”提供了深入理解并实际操作Struts2验证功能的机会。 首先,让我们了解一下Struts2验证框架的基本概念。验证框架基于两个主要组件:Validation拦截器和Action类中的验证配置。Validation...

    struts2验证框架简单实例

    在Struts2框架中,验证框架是其一个重要组成部分,用于确保输入数据的准确性和完整性,从而防止因无效数据导致的程序异常或错误。本实例将带你深入理解Struts2验证框架的使用,以及在实际操作中可能遇到的问题和解决...

    struts2 表单验证验证信息显示位置及效果

    这篇博客文章“Struts2 表单验证验证信息显示位置及效果”探讨了如何有效地实现和展示Struts2中的表单验证信息。 首先,Struts2提供了一种灵活的验证机制,包括Action级别的校验和ValidatorForm级别的校验。Action...

    Struts2框架及注释和用法

    Struts2提供了强大的表单验证功能,通过XML或者注解方式定义验证规则。例如,`@Size(max=10)`限制输入长度,`@NotEmpty`确保字段非空。 **7. 视图层** 视图通常由JSP页面构成,Struts2提供了标签库,如`s:property`...

    Struts2中使用验证框架的简单例子

    Struts2的验证框架主要负责在用户提交表单后验证输入数据。它可以基于XML配置文件或注解进行定义,确保用户输入符合预定的业务规则。验证框架分为两个阶段:客户端验证和服务器端验证。客户端验证通常使用JavaScript...

    在Eclipse中配置Struts2项目(html)手把手教会你 +struts2 标签库介绍(html) + STRUTS2学习文档.pdf + Struts2―表单验证validate(html) + struts2和struts的比较 + struts教程(html)

    在Eclipse中配置Struts2...Struts2―表单验证validate(html)对validate的type属性校验类型以及param 做了详细的解释说明。 struts2和struts的比较 让你更清楚的知道struts2和struts的不同之处。 struts教程(html)

    struts2 表单验证 注册

    在Struts2中,表单验证是一个重要的功能,它确保了用户输入的数据符合我们设定的规则,从而提高应用程序的健壮性和用户体验。在注册场景中,表单验证尤为重要,因为它涉及到用户账户的安全性。 首先,让我们深入...

    Struts2的validate验证框架

    这个validate验证框架中的actiionerror级别的错误的验证提示,并包含了如何在一个Action中处理多个业务逻辑,(struts1.x 中的DispatcheAction),例子比较简单,希望对大家学习struts有所帮助。

    struts2表单验证

    在Struts2中,表单验证是处理用户输入数据的重要部分,确保数据的完整性和正确性。下面将详细讨论Struts2中的表单验证及其相关知识点。 一、Struts2表单验证概述 Struts2的表单验证分为客户端验证和服务器端验证。...

    关于struts表单验证

    在Struts框架中,表单验证是一个关键环节,确保从用户端接收到的数据准确无误,符合应用的要求。本文将详细讲解Struts中的表单验证机制,包括ActionForm Bean的使用、validate()方法和reset()方法,以及如何处理验证...

Global site tag (gtag.js) - Google Analytics