struct2中json配置ajax

2 篇文章 0 订阅
1 篇文章 0 订阅

最近项目中需要用到这个,网上搜罗了一大堆都是有关怎么用,但是真正实施起来却不是这么回事,都不行,没有一个完整的demo例子。这里还是分享下我的实现之路吧。

原先在网上看到用jsonplugin-0.34.jar来处理的,可是由于自己的项目是在原有的基础上,导致报错 java.lang.NoClassDefFoundError com/opensymphony/xwork2/util/TextUtils 的错误,网上查询后得知是struct版本和json的版本不一致的问题导致的。

首先我的项目使用的是struct2.3.1的版本,因此需要在下载相关版本的插件,在网上看到一仁兄的解决方案:

解决方法:去掉jsonplugin-0.34.jar,使用struts2-json-plugin-2.3.1.jar 和 json-lib-2.3-jdk15.jar,struts2-junit-plugin-2.3.1.jar三个包

上面的插件下载 访问这里吧 http://central.maven.org/maven2/org/apache/struts/


使用这三个包终于走通了整个流程,现在贴上代码吧!

首先在action中定义了一个方法,如下:

	

	/**
	 * AJAX 输出
	 */
	private String result;


	public String getResult() {
		return result;
	}


	public void setResult(String result) {
		this.result = result;
	}                                                                                                                                                         public String deleteStore() throws Exception  {
		HttpServletRequest request = ServletActionContext.getRequest();
		String storeID = request.getParameter("storeID");
		// 用一个Map做例子
		Map<String, String> map = new HashMap<String, String>();

		// 为map添加一条数据,记录一下页面传过来loginName
		map.put("name", "sdfsfsfd");
		map.put("age", "20");
		map.put("storeID", storeID);

		// 将要返回的map对象进行json处理
		JSONObject jo = JSONObject.fromObject(map);

		// 调用json对象的toString方法转换为字符串然后赋值给result
		this.result = jo.toString();

		// 可以测试一下result
		System.out.println(this.result);
		return "delSuccess";
	}


然后是struct的配置:

	<package name="storeManage" extends="json-default" namespace="/advsimplestore">
		<action name="storeManage" class="com.tc.blacktea.adv.action.StoreSimpleAction" method="deleteStore">
			<interceptor-ref name="json" />
			<result name="delSuccess" type="json">
				<param name="result">result</param>
			</result>
		</action>
	</package>

接着我们来看前端的JS代码,这里我采用的是jquery来编写的ajax代码:

我原先在项目为了测试,在表格的列表中每行有个删除按钮,点击出发ajax删除操作的,大家要自己测试的话需要自己稍微改下js代码。

	jQuery(document).ready(function() {
		jQuery('#table .delLink').click(function() {
			if (confirm('确定删除本条数据吗?')) {
				var storeID = jQuery(this).attr('J_ID');
				var dataParam = {
					"storeID" : storeID
				};
				jQuery.ajax({
					url : "storeManage!deleteStore.action",
					cache : false,
					type : "POST",
					data : dataParam,
					dataType : "text",
					success : function(data) {
						alert(data);
					},
					error : function(XMLHttpRequest, textStatus, errorThrown) {
						jQuery("#errorContain").html(XMLHttpRequest.responseText);
					}
				});
			}
		});
	});


转载请注明:  http://blog.csdn.net/qq415734794/article/details/7690689


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值