问题描述
需求描述: 系统用到权限功能,每次登录的用户权限不一样,前台展示的grid列、内容是不一样的。 权限描述: 简要的概括:总公司(一级), 片区:A, B,C......(二级) 子公司:A1,A2,A3...(片区A)(三级) B1,B2,B3...(片区B)(三级) .................. 1.总公司可以看到所有片区对应的子公司信息. 2.片区只能看到片区对应的子公司信息. 3.子公司只能看到子公司信息. 目前能做到:根据登录的用户从数据库取出相应的数据(grid表头及表体信息) 问题描述:我怎么将上述信息传给前台,前台该怎么接受呢? 我用的是struts2 + extjs4.1 谁能提供一个好点的思路,如果有实例就更好了。先致谢! 问题补充:在网上找到一个简捷的办法,copy代码过来自己试了下,但是不能正常显示,浏览器报错。代码: var ctxpath = '/Drug';Ext.onReady(function() {Ext.Ajax.request( {url : ctxpath + '/ShopManager/LoadPlanListGrid',params : {results : ''},method : 'post',success : function(response) {var json = Ext.JSON.decode(response.responseText);var store = Ext.create('Ext.data.Store', {fields : json.fields,data : json.data});Ext.getCmp("configGrid").reconfigure(store, json.colums);Ext.getCmp("configGrid").render();}});Ext.create("Ext.grid.Panel", {//tbar : auditBtn,displayInfo : true,id : 'configGrid',name : 'configGrid',renderTo : 'grid',columns : [],items : []});});浏览器截取到的JSON: {"results":"["colums":[{"dataIndex":"number","header":"序号"},{"dataIndex":"text1","header":"编码"},{"dataIndex":"info1","header":"名称"},{"dataIndex":"special1","header":"金额"}],"fields":[{"name":"number"},{"name":"text1"},{"name":"info1"},{"name":"special1"}],"data":[{"text1":"3","info1":"4","special1":"5","number":"1"}]]"}浏览器报的错误: [W] Ext.data.Store created with no model. 参考的实例地址:http://www.cxybl.com/html/extjs/2012022419535.html
解决方案
在后台获取配置的列,传到jsp后:比如'<s:property value="columns" '/>的值为 姓名-地址-电话,'<s:property value="fields" '/> 的值为 name-address-phone,在jsp上用js的split(-)数组,在页面拼装grid的columns数组和fileds数组就可以了。
解决方案二:
如果权限不同要显示的grid的columns不同,你可以定义response.text定义ajax返回字符确定具体columns,如果columns是不固定的,那么就需要一个新的ajax请求用于从数据库返回columns字段,进行页面显示。