在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=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=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>
在ajax中对于json的运用,布布扣,bubuko.com
原文:http://www.cnblogs.com/mxyhws/p/3754710.html