日期:2014-05-16  浏览次数:20318 次

struts2应用json返回列表,js处理
今天写程序,用到了ajax,json。
具体的功能如下:
选择一个工程师组,根据其ID通过AJAX方式查询组中的工程师,返回工程师(id,name)列表,遍历此列表,在一个div中以checkbox的形式展示组中的工程师,以供多选。
为了方便,我首先想到了使用json的形式返回数据,之前就对json很崇拜,不过一直没有机会使用。呵呵,下面就具体的写一下过程及个人认为应注意的地方,如有错误或更好的改进方法,还请提出,谢谢。
1,环境:struts2 + jquery + json
2,jar,主要是json的jar包,jsonplugin-0.34.jar,其他的struts2就不说了
3,实现:
js部分略(其实就是jquery的普通写法)

struts2的action实现部分
private List<Engineer> engineerList;
public void setEngineerList(List<Engineer> engineerList){
     this.engineerList = engineerList;
}

public List<Engineer> getEngineerList(){
     return this.engineerList;
}
public String queryEngineersByGroupId(){
    //通过service方法查询出工程师列表(queryList),并放入engineerList中
     this.setEngineerList(queryList);   
     return SUCCESS; 
}


struts2 xml配置部分
<package name="jsonpackage" extends="json-default" namespace="/json">
    <action name="queryEngineersByGroupId" 
            class="actionTest" 
            method="queryEngineersByGroupId">
       <result type="json">
          <param name="includeProperties">
               engineerList\[\d+\]\.id,
               engineerList\[\d+\]\.name
          </param>
       </result>
   </action>
</package>


js回调函数部分
function queryEngineersByGroupIdCallBack(data){
    var engineers = eval( "(" + data + ")" );
    var len = engineers.engineerList.length;
    for(var i = 0 ; i < len ; i ++){
       $("#divId").append("<input type='checkbox'
                           name='engineerchk' value='" 
                          + engineers.engineerList[i].id
                          + "'/>"
                          + engineer.engineerList[i].name);
    }
}


注:红色部分是我认为需要主要的地方。