您的位置:首页 > Web前端 > JQuery

JQuery+JSON+Struts返回一个List到页面

2011-09-24 21:38 417 查看
最近有人问我,怎么用JQuery+JSON+Struts实现,返回一个List到页面,前面我已经讲过了 一个简单的登陆的例子,那是返回一个字符串,

这个例子有些不同,因为你要返回的是一个列表,而列表中都是实体:在这个实例中点击公司名称,返回子公司列表,从Action中返回List

这就需要用到JSONArray 把原来的List 转化为JSONArray格式,我看到网上有相应的文章,但是相对麻烦,还有很多人自己写代码,实现普通的实体转化为JSon对象,

这样的人很厉害,但是有现成的为什么还自己动手呢,直接用JSON包中的不就行了嘛

准备:在你为整个项目添加了Struts之后(例子中是Struts2.1)

还要下载一个json-lib-2.4-jdk15.jar(我下载的是这个版本),添加到项目中

同时还要下载一个ezmorth-1.0.1.jar(我用的这个版本比较低,可以下载新的),否则就会出现 class net.sf.json.XXXX can't fount这样的错误,就是一个类找不到,把

这个包加入就没有问题了。

准备结束了,直接看代码就行了:

首先看show.jsp

<script type="text/javascript" src="<%=basePath%>/js/jquery-1.3.1.js">

</script>

<script type="text/javascript">

function GetTree(num)

{

var param={comNum:num};

$.ajax({ //采用Ajax方法

type:"post", //post方式

dataType:"json", //返回数据类型是JSON数据格式

data:param, //传递给Action的参数是param

url:"ReturnTree", //处理的Action名称

success:function(data){ //成功的处理函数

$.each(data,function(commentIndex, comment) { //遍历返回数组的每一个实体

alert(comment.sshortName); //输出实体的sshortName属性的值

})

},"json");

}

</script>

</head>

<body>

<body id="bodyTree">

<div id="cmsTree">

<ul id="treemenu3" class="treeview">

<li>

<strong>组织架构</strong>

<a href="javascript:ddtreemenu.flatten('treemenu3', 'expand')"><strong>展开</strong>

</a>

<a href="javascript:ddtreemenu.flatten('treemenu3', 'contact')"><strong>收缩</strong>

</a>

</li>

<li>

//在这里调用JS函数参数是公司的ID

<i></i><span onclick="GetTree('<%=company.getCompanyNum()%>')"><%=company.getCompanynameC()%></span>

<ul>

<li>

<a href="#">彰化</a>

</li>

Action的代码:

public class DLCompanyAction {

private String comNum;//接受页面传递过来的公司ID参数

public String getComNum() {

return comNum;

}

public void setComNum(String comNum) {

this.comNum = comNum;

}

private JSONArray resultTree;//我要返回给页面的List

public JSONArray getResultTree() {

return resultTree;

}

public void setResultTree(JSONArray resultTree) {

this.resultTree = resultTree;

}

public String GetDLCTree()

{

dlc=new DLcompanyserviceImp();//dlc 是我项目中的一个service实现类,里面有一个方法就是下面的ReturnSubcompanyById,方法是根据给定的公司,返回公司的子公 司 列表

List<Subcompany> list=dlc.ReturnSbuCommpanyById(comNum);

JSONArray jsarry=new JSONArray();

jsarry=JSONArray.fromObject(list); //或者JSONArray jsarry=JSONArray.fromObject(list)

resultTree=jsarry;

return "success";

}

}

最后是Struts.xml的配置

<package name="TreeDL" extends="json-default">

<action name="ReturnTree" class="com.wit.action.DLCompanyAction" method="GetDLCTree">

<result type="json">

<param name="root">resultTree</param>//resultTree是Action中的返回变量

</result>

</action>

</package>

一切OK,希望对你有帮助哦,不明白再问我吧,欢迎骚扰
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐