天天看點

配置JsonConfig過濾有可能引起循環的字段

通過配置JsonConfig過濾有可能引起循環的字段,如果不這樣,根據hibernate的原則會不斷的級聯查詢.

*************************************Action******************************************************

1.對象。

JsonConfig jsonConfig = new JsonConfig();

jsonConfig.setExcludes( new String[]{ "creator", "module", "testPoints","testProcesses","highLevelRequirements","lowLevelRequirements"} );

String result = JSONObject.fromObject( testCase對象 ,jsonConfig).toString();

2.List數組

JsonConfig jsonConfig = new JsonConfig();

jsonConfig.setExcludes( new String[]{ "creator", "module", "testPoints","testProcesses","highLevelRequirements","lowLevelRequirements"} );

JSONArray lineitemArray = JSONArray.fromObject( testCases集合List ,jsonConfig);

String result = JSONArray.fromObject(lineitemArray).toString();

3.Map對象

Map map = new HashMap();

JsonConfig jsonConfig = new JsonConfig();

jsonConfig.setExcludes( new String[]{ "creator", "module", "testPoints","testProcesses","highLevelRequirements","lowLevelRequirements"} );

JSONArray lineitemArray = JSONArray.fromObject( testCases集合List ,jsonConfig);

map.put("testCases", lineitemArray);

String result = JSONObject.fromObject( map對象 ).toString();

************************************struts.xml*******************************************************

<package name="ajax" extends="json-default" namespace="/ajax">

..........

        <action name="childrenAjax" class="**********.AssociationBaseAction" method="getChildren">

            <result name="success" type="json">

                <param name="root">result</param>

            </result>

        </action>

..........

</package>

***************************************javascript****************************************************

1.對象。

  $.ajax({

   type: "POST",

   url: "ajax/oneAjax.html",

            dataType: "json",

   data: "targetId=" + val ,

   success: function(result){

    var json=eval("("+ result + ")");

    $('#selectedResult').append(  "<div id=" + json.id +"><input type='checkbox' name='selected' value='" + json.id + "'>"+ json.id + " : " + json.name +"</div>"  );

   }

  });

2.List數組

  $.ajax({

    type: "POST",

    url: "ajax/childrenAjax.html",

    dataType: "json",

    data: url,

    error: function(){

     alert("<fmt:message key='errors.msg'/>");

    },

    success: function(result){

      var org1=eval("("+ result + ")"); 

      for(var i=0;i<org1.length;i++){ 

       menuTree.add(org1[i].id,ID,org1[i].id + " : " + org1[i].name);  

      }  

    }

  });

3.Map對象

  $.ajax({

   type: "POST",

   url: "ajax/associationAjax.html",

            dataType: "json",

   data: "associationObjectIds=" + idString () ,

   success: function(result){

    var json=eval("("+ result + ")");

    var dataItems = json.dataItems;

    var testCases = json.testCases;

    var sysReqs = json.sysReqs;

    var hlrReqs = json.hlrReqs;

    var llrReqs = json.llrReqs;

    var funcInfos = json.funcInfos;

    .....................................................

    if (testCases.length != 0){

             $('#testCaseDiv').empty();

             var url = "";

             for(var i =0;i<testCases.length;i++){

               url = url + "<div id='testCaseDiv" + i + "' style='height:30px;overflow:hidden;'>";

               url = url + "<table width=100% ;

               url = url + "<tr align=center>";

               url = url + "<td width=20% height=28 bgcolor=#EFEFEF><fmt:message key='summary.html.testCase.Id'/></td>";

               url = url + "<td width=30% height=28 align=left>";

               url = url + testCases[i].id + "&nbsp;";

               url = url + "</td>";

               url = url + "<td width=20% height=28  bgcolor=#EFEFEF><fmt:message key='summary.html.testCase.creator'/></td>";

               url = url + "<td  width=30% height=28  align=left >";

               url = url + "<span style='float:left' id='testCaseSpan" + i + ".creator'>" + testCases[i].creatorName + "</span>"; 

               url = url + "<span style='float:right' id='testCaseSpan" + i + "' οnclick=shoppingcat('testCaseDiv" + i + "','testCaseSpan" + i + "')  title=open><img src='./images/down.png'/></span>";

               url = url + "&nbsp;";

               url = url + "</td>";

               url = url + "</tr>";

               url = url + "<tr align=center>";

               url = url + "<td width=20% height=28 bgcolor=#EFEFEF><fmt:message key='summary.html.testCase.name'/></td>";

               url = url + "<td colspan=3 height=28  align=left><span  id='testCaseSpan" + i + ".name'>" + testCases[i].name + "</span>&nbsp;</td>";

               url = url + "</tr>";

               url = url + "</tr>";

               url = url + "<tr align=center>";

               url = url + "<td width=20% height=60 bgcolor=#EFEFEF><fmt:message key='summary.html.testCase.description'/></td>";

               url = url + "<td width=80% height=60 colspan=3 align=left ><span  id='testCaseSpan" + i + ".description'>" + testCases[i].description + "</span>";

               url = url + "</td>";

               url = url + "</tr>";

               url = url + "</table>";

               url = url + "</div>"; 

             }

             $('#testCaseDiv').append(url);

       }

    ...........................................

   }

  });