首页 > 代码库 > 在ajax中对于json的运用

在ajax中对于json的运用

 

在action中把对象编程json字符串,代码:

 public class ShowRolePrivilegeAction {

 private int roleId;

 private String rolePrivileges;

 private IPermissionDao permissionDao;
 
 public void setPermissionDao(IPermissionDao permissionDao){
  this.permissionDao = permissionDao;
 }

 public String execute() {
  try {
   // 存放所有功能的集合
   List<PublicPrivilege> allPrivileges = new ArrayList<PublicPrivilege>();
   // 获取所有功能
   allPrivileges = permissionDao.findPrivilegesAll();
   if(roleId==1){
   for(int m=0;m<allPrivileges.size();m++){
    if(allPrivileges.get(m).getPrivilegeId()==2)
     allPrivileges.remove(m); 
       }
   }
   // 存放当前角色拥有的功能集合
   List<PublicPrivilege> rolePrivilege = new ArrayList<PublicPrivilege>();
   rolePrivilege = permissionDao.findPrivilegeIdByRole(roleId);
   StringBuffer sb = new StringBuffer();
   if (!rolePrivilege.isEmpty()) {
    //把一个List集合转为JSON字符串格式
    JSONArray arr = JSONArray.fromObject(rolePrivilege);
    sb.append(arr);
    //已经拥有的功能和未拥有的功能之间插入“|”。在js中用“|”拆分
    sb.append("|");
    //将已经拥有的功能从所有的功能集合中删除
    allPrivileges.removeAll(rolePrivilege);
   
    if (!allPrivileges.isEmpty()) {//判断当前角色是否已经拥有所有的功能
            //如果还未全部拥有,在返回的字符串中拼接上还未拥有的功能
     JSONArray array = JSONArray.fromObject(allPrivileges);
     sb.append(array);
    } else {      //如果已经拥有全部功能。
            //就拼接一个符合JSON格式的提示字符串
     //拼接一个字符串: [{"privilegeId"0:,"privilegeName":"--==该角色拥有全部功能==--"}]
     sb.append("[{\"privilegeId\":0,\"privilegeName\":\"--==该角色拥有全部功能==--\"}]");
    }
   }else{
    sb.append("[{\"privilegeId\":0,\"privilegeName\":\"--==该角色还没有功能==--\"}]|");
    JSONArray array = JSONArray.fromObject(allPrivileges);
    sb.append(array);
   }
   setRolePrivileges(sb.toString());
  } catch (Exception e) {
   e.printStackTrace();
   return "error";
  }
  return "success";
 }

 public int getRoleId() {
  return roleId;
 }

 public void setRoleId(int roleId) {
  this.roleId = roleId;
 }

 public void setRolePrivileges(String rolePrivileges) {
  this.rolePrivileges = rolePrivileges;
 }

 public String getRolePrivileges() {
  return rolePrivileges;
 }
}

在js 中取出该字符串:

$(function(){
 $("#sltRole").change(function(){
  roleId = $("#sltRole option:selected").val();
  $("#sltRolePrivilege").empty();
  $("#sltPrivileges").empty();
  $.post(//ajax
   "showroleprivilege",
   {"roleId":roleId},
   function(data){
    var array = data.split("|");
    var a = array[0];
    var b = array[1];
    var obj0 = eval("("+a+")");
    var obj1 = eval("("+b+")");
    for(var i = 0 ; i < obj0.length ; i ++){
     var opt = document.createElement("option");
     opt.value=http://www.mamicode.com/obj0[i].privilegeId;
     opt.innerHTML = obj0[i].privilegeName;
     $("#sltRolePrivilege").append(opt);
    }
    for(var i = 0 ; i < obj1.length ; i ++){
     var opt = document.createElement("option");
     opt.value=http://www.mamicode.com/obj1[i].privilegeId;
     opt.innerHTML = obj1[i].privilegeName;
     $("#sltPrivileges").append(opt);
    }
   });
 });
});

关于struts中的配置:

<action name="showroleprivilege" class="showRolePrivilege">
       <result name="success" type="json">
        <param name="root">rolePrivileges</param>
        </result>

</action>