在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>