首页 > 代码库 > 在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>