struts2中json的使用

首先我的類關係

實體類:

class entityClass{

     private int id;

}

class model extends entityClass{

     private String username;

     private String password;

}

 

然後action中

class modelAction extends ActionSupport{

   private boolean success;

   private Model model;

   //以json對象返回jsp頁面必須要有get方法。

   //get方法、、、、

}

 

action的配置文件:

 

<package name="model" namespace="/"
  extends="json-default">
  <action name="delete_action" class="modelAction"
   method="delete">
   <result name="delete" type="json">
    <!-- 設置要返回的數據,比如:action中有getModel、getSuccess等get方法,可以用root屬性設置序列哪一個 -->
    <param name="root">success</param>
    <!-- includeProperties這個參數直接返回對象的json數據,前臺不需要eval轉換,<param name="root">result</param>則不同,需要前臺進行eval轉換-->
    <!--  <param name="includeProperties">success</param>  -->
    <!-- ignoreHierarchy 參數:表示是不是紕漏等級,也就是繼承關係,
    好比:TestAction繼承於BaseAction,那麼TestAction中歸回的json字符串默 認是不會包含父類BaseAction的屬性值,
    ignoreHierarchy值默認爲true,設置爲false後會將父類以及子類的屬性一起歸回。

    設置次屬性爲false後,會將entityClass中的id也序列化,否則不會序列化id。

-->
     <param name="ignoreHierarchy">false</param>
     <!-- 剔除model中的部分屬性,一般不與includeProperties屬性一起使用 -->
     <!--  <param name="excludeProperties">id</param>  -->
   </result>
   <result name="error" type="json"></result>
  </action>

 

jsp頁面接收json對象:

function postConnect() {
 var request = false;
 try {
  request = new XMLHttpRequest();
 } catch (trymicrosoft) {
  try {
   request = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (othermicrosoft) {
   try {
    request = new ActiveXObject("Microsoft.XMLHTTP");
   } catch (failed) {
    request = false;
   }
  }
 }

 if (!request) {
  alert("Error initializing XMLHttpRequest!");
  return false;
 }
 return request;
}

function booleanCheck(id) {
 var request = postConnect();
 if (!request) {
  alert("訪問失敗");
 }
 var url = "<%=request.getContextPath()%>/delete_action?id=" + id;
 request.open("GET", url, true);
 request.onreadystatechange = function(){
 
  if (request.readyState == 4) {
            if ((request.status >= 200 && request.status < 300) || request.status == 304) {
    var obj = eval('(' + request.responseText + ')' );   //上面的兩個if語句一定要加,否則eval方法會返回多條數據(包含錯誤數據)。request.responseText是返回的json對象。
    if(obj){
    $("tr[id='" + id + "']").remove();  //此處刷新列表
    }else{
     alert("刪除失敗!");
    }
           }
            else {
                alert("Request was unsuccessful: " + request.status);
            }
        }
 };
 request.send(null);
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章