struts2使用ajax
与文件下载类似,在struts.xml 需要配置的结果类型为stream。
<package name="default" namespace="/" extends="struts-default">
<action name="XXX" class="XXXAction" method="do()">
<result type="stream" name="success">
<param name="contentType">text/html</param>
<param name="inputName">inputStream</param>
</result>
</package>
注意两个属性contentType 和 inputName,
其中inputName 对应的值 inputStream 为在Action中的属性。
其他配置为一般配置,没有什么差异。
下面来看Action中配置
public class XXXAction extends ActionSupport{
private InputStream inputStream;
//需要提供set方法
public InputStream getInputStream() {
return inputStream;
}
public String do() {
try {
//此处填写业务代码
....
//
inputStream = new ByteArrayInputStream("1".getBytes("UTF-8"));
} catch (Exception e) {
e.printStackTrace();
}
return "success";
}
}
在jsp中可以使用JQuery的ajax方法 异步来调用action中方法
$(function(){
//按钮单击事件
$(".btn").click(function(){
var url = this.href;
var args = {"time":new Date()};
//jquery的ajax方法
$.post(url, args, function(data){
//此为回调函数,在函数中处理action中返回的数据
//也就是inputStream 对应的值
});
});
})
基本使用就是这样,如果涉及到传递对象或者集合,建议采用json 结合ajax。
后台action将数据封装成json对象传递。可以借助第三方插件或者struts自带的
json-plugin。