日期:2014-05-17  浏览次数:20713 次

高分求解(100分)struts2返回json的list中有对象,但是前台取不到这个对象中的值
struts2返回json的list中有对象,但是前台取不到这个对象中的值,解决立即结贴给分

------解决方案--------------------
如何返回的,如何拼接的json格式!~把你的action,和页面贴出来!
------解决方案--------------------
看下代码啊
------解决方案--------------------
后台返回的数据是
{'id':1,'name':'st','grant':[{'tm_id':1,'tm_name':'zc'},{'tm_id':2,'tm_name':'ww'}]}

前台获取
var data = eval("(" + json + ")");//json为接收的后台返回的数据;
var id1 = data.grant[0].tm_id;
var name1 = data.grant[0].tm_name;

var id2 = data.grant[1].tm_id;
var name2 = data.grant[1].tm_name;


楼主参考下
------解决方案--------------------
樓主,用firbug調一下,看看 "網絡"視圖裏面找到對應的請求,看看有沒有返回的數據,
接下來看著辦就行了
------解决方案--------------------
// 首先获取所有的父节点
public void FNodesdata(List<Nodes> list) {
for (int i = 0; i < list.size(); i++) {
returnStr.append("{" + "id" + ":");
returnStr.append("\"");
returnStr.append(list.get(i).getId());
returnStr.append("\"");
returnStr.append(",ParentId:");
returnStr.append("\"");
returnStr.append(list.get(i).getParentId());
returnStr.append("\"");
returnStr.append(",name:");
returnStr.append("\"");
returnStr.append(list.get(i).getName());
returnStr.append("\"");
returnStr.append(",children:");
returnStr.append(list.get(i).getChildren());
returnStr.append("},");
}
}


// 规范成JSon格式
public String modifyStr(String returnStr) {
return ("[" + returnStr + "]").replace(",]", "]");
}


Action:
public String execute() throws Exception {
// TODO Auto-generated method stub
System.out.println("action。。。。。。falther。。。。。。。。。");
// 服务器端响应客户端请求的数据
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
String data = new showAllPaper().printData();
if (data != null && data.length() > 0) {
out.print(data);
} else {
out.print("数据有问题.........");
}
return null;
}
JS:
var dd=$.ajax({url: "itemView.action",async: false}).responseText;
var data=eval(dd);

 for(var i=0;i<data.length;i++)
{
if(data[i].children)
{
d.add(data[i].id,data[i].ParentId,data[i].name,"javascript:getChildren('"+data[i].id+"')");
}
else{
d.add(data[i].id,data[i].ParentId,data[i].name,"javascript:showArticle('"+url+"')");
}
}

自己的拙见!希望能够对你有所帮助!
------解决方案--------------------
探讨

比如List<Student> students=new ArrayList<Student>();student中有一个属性Course course;course是通过hibernate外键机制从数据库得到的是student的一个属性对象,students封装成json格式传到前台,前台无法取到course对象中的相应属性信息。