使用struts2+jquery进行ajax异步通信时,如何传输一个包含有多个属性的VO对象呢?
比如说,注册一个用户,用户包含username,pwd,sex等多个信息,当然最简单的方法是使用下面这种格式传输:username=“uname”&pwd=“pwd”&sex=“male”,但是我们可以直接做成一个UserVO来传输,也方便后台使用。
$("#registBtn").click(function() {
var opeInfo = {
"opeId":$("#opeIdText").val().trim(),
"opeName1":$("#opeName1Text").val().trim(),
"email":$("#emailText").val().trim(),
"opeGrpId":$("#opeGrpCombo option:selected").val().trim()
};
var options = {
url:$("#operegist_action").val(),
type:'POST',
dataType:'json',
data:parseParam(opeInfo, 'operatorVO'),
success: registResponse
};
$.ajax(options);
});
/**
* Jqueryオブジェクトをajaxの出力フォーマット(id1=key1&id2=key2&...)へ変換する関数
*
* @param param jqueryオブジェクト
* @param key VOオブジェクト名
* @returns ajax出力フォーマットの文字列
*/
function parseParam(param, key) {
var paramStr = "";
if (param instanceof String || param instanceof Number
|| param instanceof Boolean) {
paramStr += "&" + key + "=" + encodeURIComponent(param);
} else {
$.each(param, function(i) {
var k = key == null ? i : key
+ (param instanceof Array ? "[" + i + "]" : "." + i);
paramStr += '&' + parseParam(this, k);
});
}
return paramStr.substr(1);
}
上面的parseParam(param, key)这个函数就是将用户传入的一个param对象(可以是一个数组或者json对象,或者字符串什么的),解析成ajax能识别的带有“&”的字符串,并且将其以用户指定的key命名的VO封装(这个动作是有struts2自动完成的,注意这里的key的值要等于后台action中VO的变量名)。
另外,为了防止工程在服务器上发布后出现找不到url的路径,可以将ajax的option中的url不要写死在js中,而是将action的url写在jsp的一个hidden域中,然后js去读取这个值,如下:
<input type="hidden" id="operegist_action"
value="<s:url namespace="/opemgr_ajax" action="operegist"/>">
分享到:
相关推荐
1. 创建JSON数据:在JavaScript中,可以使用`JSON.stringify()`将Java对象转换为JSON字符串。 2. 发起Ajax请求:使用jQuery的`$.ajax`方法,设置URL为目标Action的路径,data参数为JSON数据,dataType为'json',...
它提供了将Java对象转换为JSON字符串,以及将JSON字符串反序列化为Java对象的方法。 4. **jQuery库(jquery-1.7.2.js和jquery-1.7.2.min.js)**:jQuery是一个流行的JavaScript库,简化了DOM操作、事件处理和AJAX...
在Struts中,通过使用JSON插件,Action可以直接返回一个Java对象,该对象会被自动转换成JSON字符串并发送回客户端。前端JavaScript可以方便地解析这个JSON响应,更新DOM元素,从而实现动态页面更新。 这个资源可能...
结合这三个组件,开发者可以构建出响应式、动态的Web应用,后端使用Struts 2处理业务逻辑,通过JSON Plugin返回JSON数据,前端利用jQuery通过AJAX请求获取这些数据,然后动态更新页面,提高用户体验。这种前后端分离...
这个插件主要的功能是让Struts2应用程序能够轻松地处理JSON(JavaScript Object Notation)数据格式,使得Web应用可以方便地进行JSON序列化和反序列化,从而实现与前端的Ajax交互。 Struts2是一个基于Model-View-...
- **Action返回类型**:设置Action的结果类型为`json`,Struts2会自动将模型对象转化为JSON字符串。 **案例——商品信息查询** 1. **前端操作**:利用jQuery发送AJAX请求,获取商品信息并显示。 2. **服务器端...
5. **处理JSON响应**:前端接收到JSON响应后,可以使用JavaScript的JSON.parse()方法将JSON字符串解析为JavaScript对象,然后进行进一步的操作。 6. **安全注意事项**:使用Struts2 JSON时,要注意防止XSS(跨站...
Struts2可以使用这些库将Java对象转换为JSON字符串,反之亦然。 4. `jackson*.*.jar` 或 `gson-*.jar`: 这些是其他的JSON库,例如Jackson或Gson,它们也可以与Struts2一起工作,提供更灵活的对象-JSON绑定。 导入...
在Action类中,你可以定义一个名为`execute`或其他自定义的方法,该方法将返回一个字符串,这个字符串就是Struts2的结果类型。当结果类型为`json`时,Struts2会自动将Action的属性转化为JSON格式: ```java public ...
Struts2具有良好的可扩展性,可以使用插件扩展框架功能,如Struts2-dojo-plugin提供AJAX支持,Struts2-convention-plugin实现注解配置等。 8. **工具支持** 标签提到的"工具"可能是指Struts2提供的一系列JSP标签...
1. **自动JSON序列化和反序列化**:将Action的返回对象转换为JSON字符串,或者将请求中的JSON数据转换为Action的属性。 2. **JSON结果类型**:通过配置Action的结果为"json"类型,可以轻松地将Action的结果以JSON...
例如,研究Struts2的JSON插件是如何将Java对象转换为JSON,JQuery的Ajax实现细节,以及如何通过自定义拦截器扩展Struts2的功能。 5. 工具支持:在开发过程中,开发者可能需要用到诸如IDEA、Eclipse这样的集成开发...
而JSON由于其结构与JavaScript的对象语法相似,因此成为了AJAX传输数据的理想选择。 在"JSon转换,Sturs2的AJAX的应用"这个主题中,我们可能会讨论以下知识点: 1. JSON格式:JSON格式由键值对组成,键用引号包围...
通过这种方式,Struts2能够将Java对象直接转换为JSON字符串,然后发送到客户端。客户端可以使用JavaScript轻松地解析这些数据,进行进一步的处理。这种交互方式大大简化了服务器与客户端之间的数据通信,提高了应用...
Apache的Commons Lang库中的`StringEscapeUtils`可以帮助处理特殊字符,而Google的Gson库或Jackson库可以方便地将Java对象转换成JSON字符串。 例如,假设有一个User对象: ```java public class User { private ...
这些库提供了将Java对象转换为JSON字符串的功能。在描述中提到的`strutsjson`压缩包可能包含了必要的库文件。 2. **配置Struts2**:在`struts.xml`配置文件中,你需要为处理JSON请求的Action定义一个特定的拦截器栈...
例如,你可以使用它来将Java对象转换成JSON字符串进行网络传输,或者接收服务器返回的JSON字符串并转换成Java对象进行进一步处理。 `jsonplugin-0.34.jar` 可能是一个针对特定框架或工具的JSON插件,比如可能是用于...
- **空格过滤**:`$.trim()` 可以去除字符串两端的空白字符。 #### 八、Ajax技术 1. **定义**: - **概念**:Ajax (Asynchronous JavaScript and XML),即异步的 JavaScript 和 XML 技术,允许网页在不重新加载的...
然而,当安装并配置了JSONPlugin之后,Action可以直接返回一个JSON对象,这个对象将被序列化为JSON字符串,并作为HTTP响应的主体返回给客户端。 JSONPlugin的使用步骤一般包括以下几步: 1. 添加依赖:首先,你需要...
在后台,通常是Java的Spring MVC或Struts2等框架,会接收到前端提交的JSON字符串。这些框架通常提供自动将JSON字符串映射到Java对象的功能。在Struts2中,可以使用`@ActionListeners(AnnotationValidation.class)`...