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。