servlet里Map对象存进Session,在JSP里取出来以后Map里面值为空,这是为什么?
servlet中的代码:try{HttpSessionsession=request.getSession(true);Mapcart=request.getParame...
servlet中的代码:
try {
HttpSession session = request.getSession(true);
Map cart = request.getParameterMap(); //这里的Map是有数据的。
//这里来输出cart的话是没有问题的。
session.setAttribute("cart", cart);
response.sendRedirect("gouwuche.jsp");
} finally {
out.close();
}
gouwuche.jsp页面代码:
<%
Map cart = (Map)session.getAttribute("cart");
Iterator iter= cart.entrySet().iterator();
while(iter.hasNext())
{
Map.Entry entry = (Map.Entry)iter.next();
String key = (String)entry.getKey();
String val = null;
Object obj = entry.getValue();
if (obj instanceof String[])
{
String[] strs = (String[])obj;
val = Arrays.toString(strs);
}else{
val = obj.toString();
}
out.println(key + "---" + val);
}
%>
运行后没有输出值,因为While里面的内容都没有运行。同样的输出语句放在servlet里面就能正常输出。说明从JSP里取出来的Map出了问题,注释掉这一行: while(iter.hasNext()) 直接输出第一个值, 运行会抛出异常: nosuchelementexception 这是为什么?怎么能让JSP取出的Map同Servlet中的一样有值? 展开
try {
HttpSession session = request.getSession(true);
Map cart = request.getParameterMap(); //这里的Map是有数据的。
//这里来输出cart的话是没有问题的。
session.setAttribute("cart", cart);
response.sendRedirect("gouwuche.jsp");
} finally {
out.close();
}
gouwuche.jsp页面代码:
<%
Map cart = (Map)session.getAttribute("cart");
Iterator iter= cart.entrySet().iterator();
while(iter.hasNext())
{
Map.Entry entry = (Map.Entry)iter.next();
String key = (String)entry.getKey();
String val = null;
Object obj = entry.getValue();
if (obj instanceof String[])
{
String[] strs = (String[])obj;
val = Arrays.toString(strs);
}else{
val = obj.toString();
}
out.println(key + "---" + val);
}
%>
运行后没有输出值,因为While里面的内容都没有运行。同样的输出语句放在servlet里面就能正常输出。说明从JSP里取出来的Map出了问题,注释掉这一行: while(iter.hasNext()) 直接输出第一个值, 运行会抛出异常: nosuchelementexception 这是为什么?怎么能让JSP取出的Map同Servlet中的一样有值? 展开
展开全部
request.getParameterMap()
request里取出的对象可能会在请求结束后被销毁,把值取出来加入到一个集合里去,把集合放入session试试
request里取出的对象可能会在请求结束后被销毁,把值取出来加入到一个集合里去,把集合放入session试试
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询