一次ligerui的ligerComboBox使用
环境:jdk6,springMVC,jsp,oracle
ligerComboBox一般语法:
$("#jc").ligerComboBox({
width : 110,
selectBoxWidth:110,
//data:$("#jcsj").val(),
data:data,
valueField : 'dm', textField: 'mc',
value:"8"
});
目的:实现一个下拉框的数据是从session里获取达到初始化
起因:一开始是在js写死,领导想数据是从数据库里查到放到session里,然后js获取数据初始化
一开始:用户登录时,查找数据,放到session,request.getSession().setAttribute(“jcsj”,jcsj),返回的是list。
在前台获取:
<input id="jcsj" type="hidden" value="<%=request.getSession().getAttribute("jcsj") %>"/>
数据获取:var sj = $("#jcsj").val()
data数据处就放sj。
报错无法解析。
二:放的都是json格式字符串,放list不对?找ligerui官网,无法查看源码就点查看去看代码,可惜全是写死的,再去看原来的写法,不过原来的全是发送ajax请求获取的数据,可是这次是从session获取到底哪里不对呢?不是放json格式字符串吗,我在后台写好传一个json字符串可以了吧,于是我就在后台循环组装一个字符串,再放到session传到前台。
还是不行,
三:·我发现原来的数据alert全是一个个Object,我是一个字符串,我就new一个Array去承接这个值,不管是list(说是一个个对象)json字符串还是无法解析。有点绝望。
四:前台组装,报错。。。。。。
最终:花了我好几个小时,还是不行,只好照着ajax请求的返回值、取值方法试一下
首先:
把list放在map里,然后转换、加密,
request.getSession().setAttribute("jcsj", Base64.encodeBase64String(JSONObject.fromObject(map).toString().getBytes("utf-8")));
前台js:
var jcsjlist = JSON.parse($.base64().decode($("#jcsj").val())).jcsjlist;
var jcarray = new Array();
jcarray=jcsjlist;
把jcarray放到data即可。
我其实只知道格式不对,至于为什么不对还是不了解。
如果哪位大佬知道如何简化或者我为什么一直出错,望告知,谢谢。