`
myoldman
  • 浏览: 84842 次
  • 性别: Icon_minigender_1
  • 来自: 福建福州
最近访客 更多访客>>
社区版块
存档分类
最新评论

struts2实践- 结合jquery的纯客户端js表单校验

阅读更多
折腾了几天struts2框架,发现其对校验的支持不是很好,主要体现在如下几点
1.灵活性差
只有theme为xhtml和css_xhtml的时才能够启用纯客户端的js验证.
一般用户对页面UI表示都有一定的要求,当theme为xhtml或css_xhtml的时候会导致页面的排版和用户的UI要求不一致,而且几乎无法解决该问题.并且struts2纯js客户端的错误信息是利用动态添加一个tr来显示的.这就导致如果我想把错误和表单显示在同一行,利用struts2的客户端验证就很难做到.
2.默认支持的校验类型比较少.
struts2默认只支持比较少的几种验证类型例如
* required validator
* requiredstring validator
* stringlength validator
* regex validator
* email validator
* url validator
* int validator
* double validator
date和表达式验证都不支持.这给使用造成了一定的麻烦.
3.不支持客户端定制的js验证.
针对如上几点郁闷的地方,我在网上寻找了很久终于发现了一个比较好js客户端验证的框架
jquery-validate
该验证框架基于jquery这个js框架,利用jquery特性实现客户端的js校验,主要特点如下
1.支持基于表单类似声明式的js验证详细例子如下
$("#signupForm").validate({
		rules: {
			firstname: "required",
			lastname: "required",
			username: {
				required: true,
				minlength: 2
			},
			password: {
				required: true,
				minLength: 5
			},
			confirm_password: {
				required: true,
				minlength: 5,
				equalTo: "#password"
			},
			email: {
				required: true,
				email: true
			},
			topic: {
				required: "#newsletter:checked",
				minLength: 2
			},
			agree: "required"
		},
		messages: {
			firstname: "Please enter your firstname",
			lastname: "Please enter your lastname",
			username: {
				required: "Please enter a username",
				minLength: "Your username must consist of at least 2 characters"
			},
			password: {
				required: "Please provide a password",
				minLength: "Your password must be at least 5 characters long"
			},
			confirm_password: {
				required: "Please provide a password",
				minLength: "Your password must be at least 5 characters long",
				equalTo: "Please enter the same password as above"
			},
			email: "Please enter a valid email address",
			agree: "Please accept our policy"
		}
	});

2.内置多种基本校验的类型(包括与ajax结合的服务器断校验)
required,remote(ajax服务器端校验器),minlength,maxlength,rangelength,min,
max,range,email,url,date,,dateISO,dateDE,number,numberDE,digits,creditcard
,accept,equalTo
3.支持自定义校验类型.
可以通过
$.validator.addMethod("phone", function(value) {
return validatePhone(value);
}, 'Please enter correct format for referee phone!');
添加自己的校验器
4.支持多种校验器的声明方式.
1).利用函数声明
请参考1点
2).结合控件属性声明
<input  type="radio" id="gender_male" value="m" name="gender" validate="required:true" />
3).结合控件的class属性声明
<textarea id="ccomment" name="comment" class="required">
这几种声明方式可以按照实际需要结合使用大大提高了灵活性.

附件是我利用struts2框架自己的form标签扩展的一个form标记的ftl模板,主要用于生成基于jquery的客户端校验标记,做的比较粗糙,重在抛砖引玉.
分享到:
评论
19 楼 sharp_lover 2009-02-21  
struts的校验确实是比较费劲,jquery很强但是也有一些bug有一次开发中就遇见过。
18 楼 daquan198163 2009-02-20  
commons-validator支持客户端、服务端双重验证,而且统一在一个xml配置即可
17 楼 chinaway 2009-02-20  
按照楼主的配置,终于搞定。3q
16 楼 yyjn12 2009-01-21  
不论如何,客户端的js校验,可以完全取代服务器端的数据检验吗?
个人还是觉得不可以。
毕竟js是执行于客户端的browser,很可能被有意或是无意的饶过了。
只有在服务器上确保数据的正确性,才能给数据以最大程度的保证。

不过这是题外话了。
楼主的文章还是很有价值。
15 楼 aishangtao 2009-01-21  
支持楼方的观点。
14 楼 flyingcai 2008-11-24  
JQUERY应该不错,SPRINGSIDE也用这个.
13 楼 haha_2005 2008-11-21  
强烈同意,刚接触Struts2,没有想到Struts2的验证做的如此烂
12 楼 biaoming 2008-10-16  
怎么配置和使用,能给个例子吗?
11 楼 hotdog 2008-08-19  
客户端和服务端配合验证的方案有吗?
10 楼 kjj 2008-08-16  
只用js验证很不保险,服务端验证不可少
9 楼 happy002 2008-08-15  
jquery 比较耗资源~
8 楼 luckaway 2008-07-22  
long_jianxiu 写道
不晓得有没有完整的代码,我现在弄的一头雾水的,不知道jquery的验证能不能与struts2标签结合。

跟标签有什么关系,标签在客户端生成的还不是HTMl!
7 楼 pyczh 2008-07-21  
struts1和struts2的验证框架都没有用过,一直都是写js验证,呵呵
看来有必要了解一下jquery……
6 楼 niva 2008-07-20  
可以客户端和服务器同时校验么?
5 楼 long_jianxiu 2008-07-02  
不晓得有没有完整的代码,我现在弄的一头雾水的,不知道jquery的验证能不能与struts2标签结合。
4 楼 stworthy 2008-06-10  
jquery-validate的rules和messages分开写,如能合在一起写又将如何?
3 楼 spiritfrog 2008-06-10  
看着不错, 本来就很烦struts的validator
2 楼 zl5897 2008-05-24  
<p>是啊,现实开发中,总是很难直接套用strut2自带的那几个模板来实现验证,而且不可以插入自定义脚本。为此我在开发过程中也自定义了一套模板。<br/><br/>ps:struts2的验证框架其实挺耗资源的,在我们做压力测试中,把其他性能瓶颈解除后,发现很多线程都堵在创建Validator对象这个地方。</p>
<pre name='code' class='java'>    public synchronized List&lt;Validator&gt; getValidators(Class clazz, String context, String method) {
        final String validatorKey = buildValidatorKey(clazz, context);

        if (validatorCache.containsKey(validatorKey)) {
            if (FileManager.isReloadingConfigs()) {
                validatorCache.put(validatorKey, buildValidatorConfigs(clazz, context, true, null));
            }
        } else {
            validatorCache.put(validatorKey, buildValidatorConfigs(clazz, context, false, null));
        }

        // get the set of validator configs
        List&lt;ValidatorConfig&gt; cfgs = validatorCache.get(validatorKey);

        // create clean instances of the validators for the caller's use
        ArrayList&lt;Validator&gt; validators = new ArrayList&lt;Validator&gt;(cfgs.size());
        for (ValidatorConfig cfg : cfgs) {
            if (method == null || method.equals(cfg.getParams().get("methodName"))) {
                // Remove methodName temporary
                Object methodName = cfg.getParams().remove("methodName");
                Validator validator = ValidatorFactory.getValidator(cfg, ObjectFactory.getObjectFactory());
                // Readd methodName temporary
                cfg.getParams().put("methodName", methodName);
                validator.setValidatorType(cfg.getType());
                validators.add(validator);
            }
        }

        return validators;
    }</pre>
 
<p>在整个方法上加锁,多线程并发下,有影响。</p>
1 楼 wangyazhen 2008-05-24  
支持你的观点,感觉还是jquery表现力好点

相关推荐

    (六)struts2 spring3 mybatis-3.2.3jquery.validationEngineajax表单验证数据库重复

    【标题】"(六)struts2 spring3 mybatis-3.2.3 jquery.validationEngine ajax表单验证 数据库重复"所涉及的技术栈主要包括Struts2、Spring3、MyBatis3.2.3以及前端的jQuery.validationEngine和Ajax技术。...

    Struts2 校验器

    Struts2提供了.struts2-jquery-validation-plugin等插件支持客户端验证。 2. **服务器端验证**:当客户端验证通过后,数据被发送到服务器,服务器端的验证是不可或缺的一环,因为它能防止恶意用户绕过客户端验证。...

    整合了struts2 jquery的formValidator表单验证的页面代码

    Struts2是一个强大的MVC框架,用于构建企业级的Web应用程序,而jQuery则是一个高效的JavaScript库,简化了DOM操作、事件处理以及Ajax交互。在本项目中,我们关注的是将这两者结合使用,实现基于jQuery的...

    struts2.1+json+jquery用户名校验

    总的来说,这个项目展示了如何利用Struts2.1作为后端服务,通过JSON进行数据传输,结合jQuery实现前端的异步用户名校验功能。这样的设计提高了用户体验,因为它允许用户在提交表单之前就得知用户名是否有效,而无需...

    struts-2.5.22-src.zip

    6. **插件更新**:Struts2支持多种插件,如 strut2-dojo-plugin、strut2-jquery-plugin 等,新版本可能会对这些插件进行更新,增加新的功能或改进现有功能。 7. **国际化和本地化**:Struts2支持多语言环境,新版本...

    jquery.validate 与 struts2的整合使用

    在Web开发中,jQuery Validate和Struts2是两个非常重要的工具。jQuery Validate是一个轻量级的JavaScript库,用于对HTML表单进行验证,确保用户输入的数据符合预设的规则。而Struts2是一个基于MVC设计模式的Java Web...

    浪曦_Struts2应用开发系列_第5讲.Struts2的输入校验.rar

    - Struts2支持使用JavaScript库如jQuery validate进行客户端校验,需要在JSP页面中引入相关的JS文件和编写对应的校验规则。 4. **校验结果处理** - 当输入数据未通过校验时,Struts2会自动将错误信息与相应的字段...

    struts2 校验框架

    - Struts2可以与jQuery等JavaScript库集成,实现实时的客户端验证,提高用户体验。 9. **整合其他验证框架**: - Struts2还可以与Hibernate Validator或JSR-303 Bean Validation等其他验证框架集成,利用它们的...

    struts2整合jquery例子

    8. **验证与错误处理**:Struts2提供了强大的验证框架,可以在服务器端进行数据校验,同时可以通过JSON返回错误信息,jQuery接收后显示给用户。 9. **jQuery UI和Struts2**:如果项目需求允许,还可以引入jQuery UI...

    jquery validate配合struts2简单整改

    《jQuery Validate与Struts2整合应用详解》 在Web开发中,前端验证用户输入的数据是必不可少的一环,jQuery Validate插件就是一款强大的JavaScript验证工具,它可以帮助我们方便地实现表单验证。与此同时,Struts2...

    struts2 + jquery +ajax 登录验证

    Struts2、jQuery和Ajax是Web开发中的三大关键技术,它们结合使用可以构建高效、动态且用户友好的登录验证系统。以下是对这些技术及其在登录验证中的应用的详细说明。 Struts2是一个基于MVC(Model-View-Controller...

    Struts2入门教程。包括jquery集成等。入门必看

    ### Struts2入门教程知识点概览 #### 一、Struts2简介 - **起源与发展**:Struts2并非新生事物,而是建立在Struts1和WebWork基础上的一个Web应用框架。它融合了两者的优势,提供了更为强大的功能支持。 - **设计...

    struts2系列教程

    - **4.2 Struts2框架实现数据校验**:利用Struts2内置的验证机制简化验证过程。 #### 六、国际化实现 - **5.1 页面的国际化**:如何根据不同语言和地区显示不同的内容。 - **5.2 Action的国际化**:如何使Action...

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

    通过Struts2的插件如Struts2 jQuery或Struts2 Dojo,可以实现无刷新的验证,即时向用户反馈错误,无需等待整个页面重新加载。 至于`client`这个文件,可能是博客作者提供的示例代码或资源,可能包含了Struts2表单...

    struts2和jquery_validator简单使用

    Struts2和jQuery_Validator是两个在Web开发中常用的开源框架和库,它们分别用于MVC(模型-视图-控制器)架构的管理和前端表单验证。这篇博客文章"struts2和jquery_validator简单使用"可能详细介绍了如何将这两个工具...

    struts2学习笔记六(第6讲.Struts2的输入校验续一)

    首先,客户端验证通常使用JavaScript或jQuery等前端技术在用户提交表单前检查数据。这种验证方式能够提供即时反馈,提高用户体验,但它的安全性相对较低,因为用户可以通过禁用JavaScript绕过验证。在Struts2中,...

    Struts2实现增删改查和登录校验

    例如,使用jQuery或AngularJS等JavaScript库,配合Struts2的JSON插件,实现实时的查询和验证反馈。 总的来说,这个项目涵盖了Struts2框架的基础应用,包括Action设计、数据库操作、拦截器使用以及登录验证,是学习...

    struts2入门的学习资料.pdf

    - Struts2提供了一套完整的验证框架,允许开发者通过XML或注解方式定义验证规则,进行客户端和服务器端的数据校验。错误信息可以通过`&lt;s:fielderror&gt;`标签显示。 7. **文件上传**: - Struts2提供了内置的支持...

Global site tag (gtag.js) - Google Analytics