日期:2014-05-16  浏览次数:20596 次

struts2 2.3.1.2 和juqery结合实现ajax

在struts2的2.3.1.2版本中,彻底抛弃了google的相关代码:

?

struts2 文档 写道
struts2 2.1.7以上版本已与Struts2的JSON插件捆绑在一起,谷歌代码插件已被弃用

所有网上有很多人还是施用谷歌的插件,但是实在是没有必要,其麻烦。所以用strtus2官方给插件struts2-json-plugin.

,将返回页面的属性直接作为Action类的属性,并提供setter/getter方法。具体实例代码如下:

?

package com.suntrustit.schema.action.ajax;

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.json.annotations.JSON;

import com.opensymphony.xwork2.ActionSupport;

@ParentPackage("json-default")  
public class AjaxAction extends ActionSupport {

	private String result;//用于向页面返回结果
	
	private String param; //用于接收页面传来的值

	@JSON(name="result")//此标签可以不加
	public String getResult() {
		return result;
	}

	public void setResult(String result) {
		this.result = result;
	}
	
	@Action(value="/ajax", results={
			@Result(type="json")
	})
	public String doAjax() throws Exception {
		result = param + " my Ajax";
		return SUCCESS;
	}

	public String getParam() {
		return param;
	}

	public void setParam(String param) {
		this.param = param;
	}
}

?注意:由于属性“result”作向页面返回展示的值,在其方法上加“@Json(name='result')”标签,当然也可以不加。

?

页面代码:

?

<script type="text/javascript" src="js/jquery.js"></script>
	<script type="text/javascript">
		$(function() {
			$("#btn").click(function() {
				
				var txt = $("#txt").val();
				alert(txt);
				$.ajax({
					url:"ajax.action?param=" + txt,
					dataType:"json",
					type:"POST",
					success:function(data) {
						alert(data.result)
					}
				})
			})
		})
	</script>