首先上一个Jquery+Json+struts2的例子,这个例子是从网上抄下来的,调试过程中出现了一些问题,现记录下来:
test.jsp
<%@ taglib prefix="s" uri="/struts-tags"%>
<SCRIPT type="text/javascript" src="js/jquery-1.2.6.js"></script>
<SCRIPT type="text/javascript">
$(document).ready(function () {
$("button").click(function () {
var params = $("input").serialize();
$.ajax({url:"jsonAction.action", type:"post",
dataType:"json", data:params, success : update_page});
});
});
function update_page(result) {
alert('abcd');
var json = eval('(' + result + ')');
var str = "First Name:" + json.firstname + "<br />";
str += "Last Name:" + json.lastname + "<br />";
str += "age:" + json.age + "<br />";
alert(str);
$("#result").html(str);
}
</SCRIPT>
<div id="result">
</div>
<s:form action="" method="post">
<s:textfield label="First Name" name="user.firstname" />
<s:textfield label="Last Name" name="user.lastname" />
<s:textfield label="age" name="user.age" />
<button>Submit</button>
</s:form>
User.java
public class User implements Serializable {
private Integer id;
private String firstname;
private String lastname;
private Integer age;
// 省略get, set方法
}
JsonAction.java
public class JsonAction extends ActionSupport {
private User user;
// 用于记录返回结果
private String result;
// 省略相应的get和set方法
@SuppressWarnings("static-access")
public String execute() throws Exception {
// 将要返回的user实体对象进行json处理
JSONObject jo = JSONObject.fromObject(user);
// 打印一下,格式如下
//{"age":3,"firstname":"xxx","id":0,"lastname":"xxxxx"}
System.out.println(jo);
// 调用json对象的toString方法转换为字符串然后赋值给result
this.result = jo.toString();
return this.SUCCESS;
}
}
struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="struts2" extends="json-default">
<action name="jsonAction"
class="com.marinda.action.JsonAction">
<result type="json">
<!-- 因为要将reslut的值返回给客户端,所以这样设置 -->
<!-- root的值对应要返回的值的属性 -->
<param name="root">result</param>
<!--
<param name="ignoreHierarchy">false</param>
<param name="noCache">true</param>
<param name="excludeNullProperties">true</param>
-->
</result>
</action>
</package>
</struts>
在调试过程中出现的问题,
1、刚开始什么都不出现,DEBUG发现走到JSONObject jo = JSONObject.fromObject(user);这步就出错了,错误消息也没有打印出来,深入DEBUG发现缺少了运行json-lib必须的包。(有Exception但不打印出来,可能是没有配置log4j的缘故)
现在json需要的包列出来,
jsonplugin-0.33.jar
ezmorph-1.0.3.jar
json-lib-2.2.3-jdk15.jar
commons-collections.jar(版本应该要高一点,2.x版的好像少了org.apache.commons.collections.map.下面的一个类)
commons-beanutils.jar
环境都搭建好了,发现在firefox下面没有结果,jquery的$.ajax的success方法根本没有执行到。但是在IE6下面是正常的(IE的兼容性太强了),感觉到很奇怪。
弄了好长时间,还是决定配置下log4j.properties,看看是不是有些错误通过log4j打印出来的。(log4j.properties是从hibernate包下在拷来的)
发现在Firefox下面运行时出现warning, 在IE下面没有。
WARN ServletUrlRenderer:45 - No configuration found for the specified action: '' in namespace: ''. Form action defaulting to 'action' attribute's literal value.
这个警告是struts2的,提交的action找不到.
其实并没有执行form里面的submit方法,就开始考虑是不是jquery提交ajax的时候错误,但是已经运行到JsonAction.
上网找找jquery提交ajax的问题,也没有找到任何结果。
最后尝试是不是多提交了一次form, 在<S:form ...>加了一个attribute:
<s:form action="" method="post" onsubmit="return false;">
OK了。
上面说错了,这个warning不是struts2的,是在WEB服务器解析jsp时候报出的warning.原因是form的action没有设置.
WARN ServletUrlRenderer:45 - No configuration found for the specified action: '' in namespace: ''. Form action defaulting to 'action' attribute's literal value.
分享到:
相关推荐
标题 "struts2+spring+hibernate+jquery+dwr+json" 描述了一个集成的Web应用程序开发框架,其中包含了多个关键技术和库。这个框架旨在提高开发效率,提供灵活的数据管理,以及用户友好的前端交互。 1. Struts2:...
Struts2、JSON和AJAX是Web开发中的关键技术,它们的整合可以实现高效的数据交互和动态页面更新。本文将深入探讨这些技术以及如何在实际项目中整合它们。 **Struts2** 是一个基于MVC(Model-View-Controller)设计...
标题 "struts2+spring3+hibernate3+jquery+springside 做一个OA2" 提供了一个综合的Web开发框架组合,用于构建一个办公自动化(OA)系统。这个系统基于以下技术栈: 1. **Struts2**: Struts2是一个Java Web MVC...
例如,研究Struts2的JSON插件是如何将Java对象转换为JSON,JQuery的Ajax实现细节,以及如何通过自定义拦截器扩展Struts2的功能。 5. 工具支持:在开发过程中,开发者可能需要用到诸如IDEA、Eclipse这样的集成开发...
在本文中,我们将探讨如何在Eclipse环境中搭建一个基于Struts2、Spring、MyBatis的SSM框架,并结合JSON和Gson库进行开发。首先,我们需要准备相关的安装文件,包括Struts2、Spring、MyBatis、jQuery、Eclipse IDE...
在IT行业中,jQuery和Struts2是两个非常重要的框架,它们分别在前端和后端扮演着关键角色。jQuery是一个高效、简洁的JavaScript库,而Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web开发框架。本...
总结,Struts2 1.8的JSON支持简化了Java Web应用中JSON数据的处理,通过配置和注解,开发者可以轻松地在Action中生成JSON响应,并在客户端进行处理。在MyEclipse8.5这样的IDE中,可以高效地开发和调试此类项目。了解...
Struts2和jQuery是两种非常流行的开源框架,它们在Web开发中有着广泛的应用。Struts2作为MVC(Model-View-Controller)架构的一部分,主要用于处理控制器层的逻辑,而jQuery则是一个强大的JavaScript库,简化了DOM...
此外,项目还包含了必要的jar包,这些可能是Struts2框架的核心库、jQuery库以及其他可能的依赖,例如JSON处理库,因为聊天数据通常以JSON格式在前后端之间传递。在MyEclipse环境中,这些库文件帮助开发者快速构建和...
lib目录下的文件可能包括Struts2的核心库、JSON处理库以及可能的Ajax支持库,如jQuery或Prototype。这些库可能包括: 1. `struts2-core.jar`: Struts2的核心库,提供了Action、Interceptor、Result等核心组件。 2. ...
- **开发模式的开启**:通过设置`<constant name="struts.devMode" value="true"/>`,可以在开发阶段获得更多的调试信息,便于问题的快速定位。 - **包含struts-jquery.xml文件**:这一步骤至关重要,因为所有与...
总结来说,通过jQuery的AJAX功能,前后台间可以方便地传递JSON数据。在实际应用中,这允许开发人员实现动态数据交互,提高用户体验,同时减少了不必要的页面刷新。需要注意的是,确保JSON格式的正确性以及在前后端...
JSON、Struts2和Ajax是Web开发中的关键技术,它们在文件上传场景中有着广泛的应用。在本项目中,我们将深入探讨如何使用这些技术实现文件上传,特别是当用户选择相同的文件进行多次提交时的情况。我们将使用...
5. **编写JavaScript代码**:在JSP页面中,使用jQuery的Ajax函数`$.ajax`或`$.getJSON`向Struts2 Action发起异步请求,获取柱状图数据。收到数据后,可以使用jQuery插件,如`jqPlot`或`Chart.js`等,根据返回的数据...
在"struts2json"这个示例项目中,你可以看到如何定义Action,如何配置Struts2的配置文件,以及如何在前端使用jQuery或其他库来发起AJAX请求并解析JSON响应。这个DEMO可以帮助理解Struts2和JSON的集成,以及如何在...
标题中的"struts2json.zip_ezmorph-1.0.3.jar_jquert开发工具"表明这是一个关于Struts2和jQuery整合使用的示例项目,其中可能包含了ezmorph-1.0.3.jar库,这个库常用于对象转换,帮助Struts2处理复杂的JSON数据。...
在Java环境中,解析和生成JSON通常需要依赖于特定的库,比如Apache Struts2框架在处理JSON响应时就可能会用到相关的jar包。 Struts2是一个非常流行的MVC(Model-View-Controller)框架,用于构建企业级的Java web...
10. `commons-logging.jar`,`log4j.jar`等日志库:Struts2使用这些日志库进行系统日志记录,便于调试和问题定位。 在实际开发中,根据项目的具体需求,可能还需要包括其他库,如数据库驱动(如`mysql-connector....