js怎么获得action传过来的数组
我想在form表单提交的时候用onsubmit()进行验证,从用户表中查找到所有的用户的用户名,在action里存放在一个数组中,然后用session存放该数组,在js里面获得该数组并进行遍历,以下是我的代码:
action中:
public String reg()
{
List<User> ulist=userservice.getUsers();
String[] uname=new String[ulist.size()];
for(int i=0;i<ulist.size();i++)
{
uname[i]=ulist.get(i).getUsername();
}
this.put2Session("uname", uname);
return "register";
}
js中:
<script type="text/javascript">
function check()
{
var uname='${sessionScope.uname}';
alert(uname[0]);
return false;
}
</script>
运行后警示框里面弹出的并不是数组的第一个元素,而是表示数组的字符串的第一个字母,比如alert(uname);获得的是:[Ljava.lang.String;@1f64da0 alert(uname[0])获得的就是[ alert(uname[1])获得的就是j alert(uname[2])获得的就是a
应该怎么改呢?我是初学者,还不太会用js,求大神指导!
------解决方案--------------------可以在action变成json字符串
然后在js转换
------解决方案--------------------用 json-lib 或者 gson 将 uname 转换为json, 然后前台js再处理json。
------解决方案--------------------用json插件(json-lib)或者自己拼json把你的list数据转换成json格式,然后在前台转换成json对象用起来就非常方便了。
------解决方案--------------------你的put2Session是怎么声明的,能看看具体的代码?
------解决方案--------------------不用json也可以,你可以直接来个list
List<EcAdvertisementPics> indexStreetJinxi = new ArrayList<EcAdvertisementPics>();
Map<String,String> mapindexStreetJinxi = new HashMap<String,String>();
mapindexStreetJinxi.put("adNo", "INDEX_STREET_JINXI_");
indexStreetJinxi = advertisementService.getAd(mapindexStreetJinxi);
request.setAttribute("indexStreetJinxi", indexStreetJinxi);
<c:if test="${indexStreetJinxi != null}">
<li class="tu">
<a target="_blank" <c:if test="${indexStreetJinxi[0].picHrefUrl != '' and indexStreetJinxi[0].picHrefUrl != null}">href="${indexStreetJinxi[0].picHrefUrl}"</c:if>><img alt="${indexStreetJinxi[0].imgAlt}" src="${imagePath}${indexStreetJinxi[0].picUrl}" width="490px" height="290px"/>
</a>
</li>
</c:if>
------解决方案--------------------
var json=$.parse(jsonstr) //jquery的函数,将json串转换为json对象
------解决方案--------------------用json
用json插件(json-lib)或者自己拼json把你的list数据转换成json格式,然后在前台转换成json对象用起来就非常方便了。
使用stringBuffer拼json串,然后把json串保存在session里吗?那在前台怎么转换json对象呢?
var json=$.parse(jsonstr) //jquery的函数,将json串转换为json对象