`
soft901
  • 浏览: 36845 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

关于Jquery+Json+struts2 调试问题总结

阅读更多
首先上一个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.




分享到:
评论
1 楼 guava 2009-09-13  
谢谢这么好的例子 正要找这个呢

相关推荐

    struts2+spring+hibernate+jquery+dwr+json

    标题 "struts2+spring+hibernate+jquery+dwr+json" 描述了一个集成的Web应用程序开发框架,其中包含了多个关键技术和库。这个框架旨在提高开发效率,提供灵活的数据管理,以及用户友好的前端交互。 1. Struts2:...

    struts2+json+ajax整合例子(导入即可运行,附带详细教程)

    Struts2、JSON和AJAX是Web开发中的关键技术,它们的整合可以实现高效的数据交互和动态页面更新。本文将深入探讨这些技术以及如何在实际项目中整合它们。 **Struts2** 是一个基于MVC(Model-View-Controller)设计...

    struts2+spring3+hibernate3+jquery+springside 做一个OA2

    标题 "struts2+spring3+hibernate3+jquery+springside 做一个OA2" 提供了一个综合的Web开发框架组合,用于构建一个办公自动化(OA)系统。这个系统基于以下技术栈: 1. **Struts2**: Struts2是一个Java Web MVC...

    Json JQuery Struts2

    例如,研究Struts2的JSON插件是如何将Java对象转换为JSON,JQuery的Ajax实现细节,以及如何通过自定义拦截器扩展Struts2的功能。 5. 工具支持:在开发过程中,开发者可能需要用到诸如IDEA、Eclipse这样的集成开发...

    Eclipse+Struts2+Spring+MyBatis+json+gson环境搭建

    在本文中,我们将探讨如何在Eclipse环境中搭建一个基于Struts2、Spring、MyBatis的SSM框架,并结合JSON和Gson库进行开发。首先,我们需要准备相关的安装文件,包括Struts2、Spring、MyBatis、jQuery、Eclipse IDE...

    jquery下的ajax与struts2操作数据库

    在IT行业中,jQuery和Struts2是两个非常重要的框架,它们分别在前端和后端扮演着关键角色。jQuery是一个高效、简洁的JavaScript库,而Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web开发框架。本...

    struts2 1 8生成返回json 修正

    总结,Struts2 1.8的JSON支持简化了Java Web应用中JSON数据的处理,通过配置和注解,开发者可以轻松地在Action中生成JSON响应,并在客户端进行处理。在MyEclipse8.5这样的IDE中,可以高效地开发和调试此类项目。了解...

    struts2+jquery实现ajax

    Struts2和jQuery是两种非常流行的开源框架,它们在Web开发中有着广泛的应用。Struts2作为MVC(Model-View-Controller)架构的一部分,主要用于处理控制器层的逻辑,而jQuery则是一个强大的JavaScript库,简化了DOM...

    网页聊天(struts2+jquery)

    此外,项目还包含了必要的jar包,这些可能是Struts2框架的核心库、jQuery库以及其他可能的依赖,例如JSON处理库,因为聊天数据通常以JSON格式在前后端之间传递。在MyEclipse环境中,这些库文件帮助开发者快速构建和...

    struts2 json Ajax 整合所需全部jar包.zip

    lib目录下的文件可能包括Struts2的核心库、JSON处理库以及可能的Ajax支持库,如jQuery或Prototype。这些库可能包括: 1. `struts2-core.jar`: Struts2的核心库,提供了Action、Interceptor、Result等核心组件。 2. ...

    struts2 jquery插件

    - **开发模式的开启**:通过设置`&lt;constant name="struts.devMode" value="true"/&gt;`,可以在开发阶段获得更多的调试信息,便于问题的快速定位。 - **包含struts-jquery.xml文件**:这一步骤至关重要,因为所有与...

    jsp中利用jquery+ajax在前后台之间传递json格式参数.docx

    总结来说,通过jQuery的AJAX功能,前后台间可以方便地传递JSON数据。在实际应用中,这允许开发人员实现动态数据交互,提高用户体验,同时减少了不必要的页面刷新。需要注意的是,确保JSON格式的正确性以及在前后端...

    json struts2 ajax文件上传 input type=file,选择相同文件也提交 附带类库

    JSON、Struts2和Ajax是Web开发中的关键技术,它们在文件上传场景中有着广泛的应用。在本项目中,我们将深入探讨如何使用这些技术实现文件上传,特别是当用户选择相同的文件进行多次提交时的情况。我们将使用...

    jquery结合struts2实现柱状图

    5. **编写JavaScript代码**:在JSP页面中,使用jQuery的Ajax函数`$.ajax`或`$.getJSON`向Struts2 Action发起异步请求,获取柱状图数据。收到数据后,可以使用jQuery插件,如`jqPlot`或`Chart.js`等,根据返回的数据...

    struts2json.rar_DEMO

    在"struts2json"这个示例项目中,你可以看到如何定义Action,如何配置Struts2的配置文件,以及如何在前端使用jQuery或其他库来发起AJAX请求并解析JSON响应。这个DEMO可以帮助理解Struts2和JSON的集成,以及如何在...

    struts2json.zip_ezmorph-1.0.3.jar_jquert开发工具

    标题中的"struts2json.zip_ezmorph-1.0.3.jar_jquert开发工具"表明这是一个关于Struts2和jQuery整合使用的示例项目,其中可能包含了ezmorph-1.0.3.jar库,这个库常用于对象转换,帮助Struts2处理复杂的JSON数据。...

    json 解析所依赖的jar包

    在Java环境中,解析和生成JSON通常需要依赖于特定的库,比如Apache Struts2框架在处理JSON响应时就可能会用到相关的jar包。 Struts2是一个非常流行的MVC(Model-View-Controller)框架,用于构建企业级的Java web...

    Struts2需要的包

    10. `commons-logging.jar`,`log4j.jar`等日志库:Struts2使用这些日志库进行系统日志记录,便于调试和问题定位。 在实际开发中,根据项目的具体需求,可能还需要包括其他库,如数据库驱动(如`mysql-connector....

Global site tag (gtag.js) - Google Analytics