- 浏览: 447126 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (162)
- easymock (3)
- 模板引擎 (3)
- JForum (4)
- web (9)
- spring (10)
- java (20)
- struts (9)
- uml (3)
- java pattern (19)
- JQuery (14)
- 多线程 (13)
- database (21)
- PS (3)
- ejb (6)
- 版本管理 svn , maven , ant (2)
- protocol (1)
- 测试 (1)
- ws (7)
- Apache (4)
- 脚本语言 (1)
- guice (1)
- 分布式 (4)
- 架构 (0)
- 经验 (1)
- 版本管理 svn (1)
- maven (1)
- ant (1)
- 书籍 (1)
- Linux (1)
最新评论
-
Master-Gao:
稍微明白了点,,有点萌萌哒
为什么匿名内部类参数必须为final类型 -
waw0931:
终于明白了,谢谢!
为什么匿名内部类参数必须为final类型 -
十三圆桌骑士:
提供了两个链接还是有用的。
安装Mondrian -
放方芳:
[flash=200,200][/flash]
Freemarker标签使用 -
放方芳:
[b][/b]
Freemarker标签使用
项目中用到validation Engine 和 stuts2,这篇文章值得借鉴(转),把原文中的一些东西改了下
validationEngine v2.0进行了重写,变化很大。
首先说一下整个表单验证,使用简单的一行代码就能完成:
$("#form.id").validationEngine('validate');
这是我之前用的验证代码:
var success=true;
$(formid+" :text,"+formid+" select,"+formid+" textarea").each(function(i,input){
if($.validationEngine.loadValidation("#"+$(input).attr('id'))){
success=false;
}
});
是挨个验证的,当然现在也可以挨个验证:
$("#form.id").validationEngine('validateField', "比如一个INPUT的ID");
下面是自己使用AJAX验证的一点经验:
1.和旧版本一样,也是在域的class属性中添加ajax[XXXX],XXXX是自定义的验证规则。
2.规则与旧版本就有区别了:
"ajaxUserCall": {
"url": "ajaxValidateFieldUser",
"extraData": "name=eric",
"extraDataDynamic": ['#user_id', '#user_email'],
"alertText": "* This user is already taken",
"alertTextOk": "All good!",
"alertTextLoad": "* Validating, please wait"
}
- url - 这个都懂
- extraData - 可选的传递参数
- extraDataDynamic - 可选 DOM id's,其value属性会作为参数传递
- alertText - 验证错误提示信息
- alertTextOk - 验证成功提示信息(绿色)
- alertTextLoad - 验证提交过程中的提示信息
3.接下来这部分是我修改的两处validationEngine源代码,因为我认为这部分不适合使用struts2。
if (!options.isError) { alert(extraDataDynamic); $.ajax({ type: "GET", url: rule.url, cache: false, dataType: "json", data: "fieldId=" + field.attr("id") + "&fieldValue=" + field.val() + "&extraData=" + extraData + "&" + extraDataDynamic, field: field, rule: rule, methods: methods, options: options, beforeSend: function() { // build the loading prompt var loadingText = rule.alertTextLoad; if (loadingText) methods._showPrompt(field, loadingText, "load", true, options); }, error: function(data, transport) { methods._ajaxError(data, transport); }, success: function(json) { // asynchronously called on success, data is the json answer from the server var errorFieldId = json.validateReturn[0]; var errorField = $($("#" + errorFieldId)[0]); // make sure we found the element if (errorField.length == 1) { var status = json.validateReturn[1]; // read the optional msg from the server var msg = json.validateReturn[2]; if (!status) { // Houston we got a problem - display an red prompt options.ajaxValidCache[errorFieldId] = false; options.isError = true; // resolve the msg prompt if(msg) { if (options.allrules[msg]) { var txt = options.allrules[msg].alertText; if (txt) msg = txt; } } else msg = rule.alertText; methods._showPrompt(errorField, msg, "", true, options); } else { if (options.ajaxValidCache[errorFieldId] !== undefined) options.ajaxValidCache[errorFieldId] = true; // resolves the msg prompt if(msg) { if (options.allrules[msg]) { var txt = options.allrules[msg].alertTextOk; if (txt) msg = txt; } } else msg = rule.alertTextOk; // see if we should display a green prompt if (msg) methods._showPrompt(errorField, msg, "pass", true, options); else methods._closePrompt(errorField); } } } }); }
注意红字部分,根据文档描述,需要返回的JSON数据应该形如:
Client receives <== ["id1", boolean, errorMsg] Server
- 域的ID
- 验证状态,成功或者失败
- 可选的验证提示信息. 如果不写则使用规则中定义的提示信息
我在struts2中使用的是struts2-json-plugin-2.1.8.jar(struts2代码在后面),返回的属性是Object[] validateReturn, 所以这里接收到的JSON数据应该我改成了json.validateReturn.
这里经过本人验证,是不需要改成json.validateReturn要这样的,用源代码中的就行
if (extraDataDynamic) {
var tmpData = [];
var domIds = String(extraDataDynamic).split(",");
for (var i = 0; i < domIds.length; i++) {
var id = domIds[i];
if ($(id).length) {
var inputValue = field.closest("form").find(id).val();
var keyValue = $(id).attr("name") + '=' + escape(inputValue);
tmpData.push(keyValue);
}
}
此处源代码是在直接使用extraDataDynamic中填写的域把"#"换成"&"就附在URL后面作为参数了,在域中如果和我一样name属性和id属性不一致,则修改此处为红色字体。
4.这部分是action中的代码
private Object[] validateReturn = new Object[3]; private HttpServletRequest request; @Action(results = {@Result(type="json", params = { "excludeProperties", "inputStream,resultStatus,expertiseVo,expertiseVos"})}, value="validateExpertiseTypeNo") public String validateExpertiseTypeNo(){ String validateId = request.getParameter("fieldId");// 获取验证的域 String validateValue = request.getParameter("fieldValue"); //获取域的value属性 int valiValue = Integer.parseInt(validateValue);//我使用的int型,在class里还有验证规则 onlyNumber if(expertiseVo.getExpertiseType() == 0){//我需要在验证规则中添加其他域的值 validateReturn[0] = validateId;//这里是返回的提示信息数组 validateReturn[1] = false; validateReturn[2] = "未指定类型"; }else if(expertiseVo.getExpertiseType() != 0){ expertiseVo = expertiseService.findExpertiseByNo(expertiseVo.getExpertiseType(), valiValue); if(expertiseVo.getId() == null){ validateReturn[0] = validateId; validateReturn[1] = true; validateReturn[2] = "可以使用"; }else if(expertiseVo.getId().length > 0){ validateReturn[0] = validateId; validateReturn[1] = false; validateReturn[2] = "在指定类型已经存在"; } } return SUCCESS; }
以上是我由v2.0替换旧的v1.6在使用ajax验证上的一点心得,因为新版本中ajax规则中多了
这两个选项,可以让我提供组合域的验证。比如我在数据库中设置了多列组合的唯一约束。
发表评论
-
js this理解
2015-01-22 16:23 564http://www.jb51.net/article/162 ... -
AJAX提交Struts2表单(服务器端validation校验出错提示)
2012-12-27 17:00 14571.目标 在基于Struts2的应用中,利用AJ ... -
jquery小技巧
2012-12-21 16:38 7831.怎么访问js函数里面的函数? 1.re ... -
如何写jquery插件
2012-10-16 16:06 872参考一下链接: http://www.cnblogs. ... -
js 闭包
2012-10-16 15:50 976我的博客里面已经有好几篇介绍java script closu ... -
js 方法调用
2011-10-27 17:32 1228英文原版: http://devlicio.us/blogs/ ... -
jquery处理带有特殊字符的id
2011-10-26 14:30 7978所以id最好不要取名有 “.”、“#”、“(”、“[” ... -
struts2 json
2011-10-26 14:29 1279为了方便ajax调用传输数据,在struts2中加入的js ... -
js 闭包
2011-10-24 22:51 1217最近在网上查阅了 ... -
jquery 验证框架
2011-10-19 18:22 16061Jquery validate 验证 具体查看附件中demo ... -
javascript面向对象技术基础
2011-08-22 16:40 916看了很多介绍javascript面向对象技术的文章,很晕.为什 ... -
Javascript的匿名函数
2011-08-22 14:19 884Javascript的匿名函数 一、什么是匿名函数? ... -
JQuery原型
2011-05-23 11:20 3168在 JavaScript 中,每个函 ...
相关推荐
本文介绍了如何将Inline Form Validation Engine这个前端验证引擎与Struts2的AJAX验证功能相结合,提升Web应用的用户体验。通过这种方式,可以实现前端的实时验证和后端的异步验证,确保数据的准确性和一致性,同时...
总的来说,"struts2ajax"项目展示了如何在Struts2框架下,结合jQuery的Ajax功能,实现页面的异步数据交互。通过这个项目,你可以学习到Struts2的Action配置、Ajax请求的发送与接收、以及前端和后端的数据处理。这将...
这篇文档“struts与ajax.docx”可能包含了如何将Struts2和Ajax结合使用的详细步骤。通常,这个过程会涉及以下几个关键点: 1. **Struts2配置**:首先,需要在`struts.xml`配置文件中定义一个Action,这个Action将...
8. 实例演示:使用Struts2+Jquery+Ajax实现动态加载数据或表单验证 "struts2 jar"文件包含了Struts2框架的核心库,可能包括struts2-core、struts2-convention、struts2-json-plugin等依赖,这些是开发Struts2应用必...
Struts2与Ajax 的实现原理,于Servlet+Ajax原理是一致的,都是通过后台的response.getWriter().print("");把数据传输给前台的。 前台Ajax格式如下(需要导入ajax库,比如:jquery-1.11.3.js) 格式: $(function()...
在Struts2中,我们可以利用Ajax和JSON来实现数据的异步交互。 **一、引入所需库** 首先,为了在Struts2中使用Ajax和JSON,我们需要引入以下库: 1. Struts2的核心库:`struts2-core.jar` 2. Struts2的JSON插件:`...
Struts2、jQuery和Ajax是Web开发中的三大关键技术,它们结合使用可以构建高效、动态且用户友好的登录验证系统。以下是对这些技术及其在登录验证中的应用的详细说明。 Struts2是一个基于MVC(Model-View-Controller...
可以使用Struts2的AJAX验证功能,实现表单字段的实时验证,无需提交整个表单即可检查输入的有效性。 8. **AJAX分页**: 对于需要分页显示的数据,Struts2 jQuery插件提供了`sj:tabbedpanel`和`sj:datatables`等...
总的来说,"struts2+jquery+ajax文件异步上传"是一个结合了后端处理和前端交互的文件上传解决方案,提供了良好的用户体验和灵活性。通过MyEclipse这样的集成开发环境,开发者可以方便地构建、调试和部署这样的项目。
#### 二、Struts 2与Ajax结合的意义 在Web 2.0时代,用户对于Web应用的体验有了更高的要求,传统的表单提交方式已经无法满足用户的即时反馈需求。而Ajax技术的出现则很好地解决了这一问题,通过在后台与服务器进行...
Struts2的AJAX支持并不是从零开始创建一个新的AJAX框架,而是选择了当时在Java EE平台上广泛使用的AJAX库,如Dojo和Direct Web Remoting (DWR)。这样做不仅可以利用已有的成熟技术,同时也降低了学习曲线,使得...
Struts2提供了强大的拦截器(Interceptor)机制,可以实现如权限验证、日志记录等功能。同时,它支持多种结果类型,包括JSP、FreeMarker、Velocity等模板语言,以及JSON和XML等数据格式。 Ajax,即Asynchronous ...
将Struts2与Ajax结合,可以实现动态、异步的数据验证,提高应用的响应速度和效率。 在Struts2中,输入验证是必不可少的一环,它确保用户提交的数据符合预设的规则,如非空检查、数据类型验证等。传统的验证方式通常...
Struts2之ajax初析的并结合jquery一个例子 Web2.0的随波逐流,Ajax那是大放异彩,Struts2框架自己整合了对Ajax的原生支持(struts 2.1.7+,之前的版本可以通过插件实现),框架的整合只是使得JSON的创建变得异常简单...
Struts和Ajax是两种在Web开发中常用的框架和技术,它们结合使用可以构建出高效、动态且用户友好的应用程序。在本篇文章中,我们将深入探讨Struts与Ajax的整合及其在增删查改(CRUD)操作中的应用。 首先,让我们...
通过以上步骤,我们就实现了Struts2结合Ajax的图片上传功能。Struts2提供了很好的集成JSON支持,使得与前端交互变得更加便捷。在实际开发中,还要考虑文件大小限制、安全性(如防止CSRF攻击)以及用户体验优化等问题...
通过结合Struts2和AJAX,开发者可以创建更高效、交互性更强的Web应用程序。 在Struts2中实现AJAX,主要涉及以下几个关键点: 1. **Struts2 Action和Result**:首先,你需要创建一个Struts2 Action类,它将处理...
"struts2_ajax.rar_struts2 ajax"这个压缩包文件很显然包含了关于如何在Struts2框架中集成和使用Ajax的示例和教程。 首先,理解Struts2的基础架构至关重要。Struts2的核心是Action类,它负责处理用户的请求并返回...
在"Struts2+Ajax实现的用户登录"场景中,首先,我们需要在Struts2的配置文件(struts.xml)中定义一个Action,这个Action将处理用户的登录请求。Action通常会包含一个方法,比如`execute()`,该方法会在用户提交登录...
### Ajax 验证与 Struts2 的深度融合 #### 原文解读与核心知识点提炼 **原文题目**:“Ajax 验证和 Struts2” **作者**:Oleg Mikheev **来源**:JavaWorld.com **链接**:...