LigerUI通过Struts2返回并显示

项目需求:需要把数据显示到表格中。表格用的是LigerUI,底层用的是Dao层。

完成步骤:第一步:首先从底层开始写获取数据的方法:

public List<NewsList> findAllNews() {
		//String sql="SELECT w2.n, w1.* FROM NewsList w1, (SELECT TOP "+pages*pageSize+" row_number() OVER (ORDER BY UpdateTime DESC, infoId DESC) n, infoId FROM NewsList) w2 WHERE w1.infoId = w2.infoId AND w2.n > "+(pages-1)*pageSize+" ORDER BY w2.n ASC";
		String sql="SELECT * from NewsList order by infoIndex desc";
		List<NewsList> nl=new ArrayList<NewsList>();
		JSONArray array=sqlHelper.query(sql);
		for (int i = 0; i < array.size(); i++) {
			JSONObject object=array.getJSONObject(i);
			NewsList newslist=(NewsList) ConvertJsonToObj.Convert(object, NewsList.class);
			nl.add(newslist);
		}
		return nl;
	}

第二步:在Action层中获取List,并转换成符合LigerUI的Json数组(需要在前面创建一个JSONObject对象 放入rows)

public String findAllNews(){
		List<NewsList> list=this.newlistListDao.findAllNews();
		HashMap<String, Object> maps=new HashMap<String, Object>();
		List<HashMap<String, Object>> lists=new ArrayList<HashMap<String,Object>>();
		for (NewsList os : list) {
			HashMap<String, Object> hashmaps=new HashMap<String, Object>();
			hashmaps.put("infoid",os.getInfoid());
			hashmaps.put("infoTitle", os.getInfoTitle());
			hashmaps.put("infoType",os.getInfoType());
			lists.add(hashmaps);
		}
		maps.put("rows", list);
		maps.put("total", list.size());//需要写进Json中,告诉LigerUI一共有多少数据
		rows=JSONObject.fromObject(maps);
		System.out.println(rows);
		return BaseAction.SUCCESS;
	}

第三步:在Struts.xml文件中配置

<action name="findAllNews" class="com.fudian.actions.NewsListAction" method="findAllNews">
    	   <result type="json">
    	      <param name="root">rows</param>
    	   </result>
    	</action>
第四步:前台JSP配置

 $(function ()
        {
            window['g'] =
            $("#maingrid").ligerGrid({
                height: '99.2%',
                columns: [
                {display:'新闻标题', name:'infoTitle', align: 'left', width: 400 },
                {display:'新闻分类',name:'infoType',align:'left', width: 200},
                {display:'更新时间',name:'updateTime',align:'left',width:200},
                {display:'发布状态',name:'status',align:'left',width:100,render:function(item){
                	var str;
                	if(item.status=="1"){
                		str="已发布";
                	}else{
                		str="未发布";
                	}
                	return str;
                }},
                ],
                dataAction:"local",//分页用ligerUI自己的分页
                url:'<%=basePath%>fdirms/findAllNews',
                root:'rows', //内容需于返回来的名字对应!!
                record:'total', //总行数
                delayLoad:true,
                rownumbers: true,
                usePager:true,
                pageSize: 20, 
                rownumbers: true,
                
            });
            $("#pageloading").hide();
        }); 
        $(function(){
        	g.set({
                //数据请求地址
                url:"<%=basePath%>fdirms/findAllNews",
                //数据书否分页,默认为true
                usePager:true,
            });
	    	 g.loadData(g.changePage('first'));
	    });

在前台配置的时候需要注意的是:root那项一定要写你在Struts.xml文件配置中对应的返回对象名字,因为这个原因,我找了3个小时的错,才把数据显示出来。

其中我加入了一个render的方法,render方法可以帮助人们把状态的数字改成汉字,我在这里就是判断返回过来的status状态当为1的时候是已发布,其他的时候为未发布。

我这个分页是让LigerUI自己分页,所以在写SQL的时候是直接获取全部数据,所以在dataAction中的值为local 如果要是自己写分页也可以,dataAction的值为server。

如果值为Server的话,需要在Action中获取Pages和pageSize的两个值,并把两个值放进分页语句中。我的分页语句留在上面了,这个是SQL Server的分页语句,性能比较好的。需要借鉴的同学可以借鉴。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值