struts 标签的问题,高手进

qingyuan18 2007-04-28 05:14:23
在servlet中往客户端写输出流前,在session中放了一个List,这个List中的每个元素都是一个VO对象,现在想在返回的jsp页面中遍历这个List中每个VO对象的属性,代码如下:
服务端servlet:
request.getSession(true).setAttribute("treeNodes",lsTmp);
response.setContentType("text/html;charset=UTF-8");
response.setHeader("Pragma", "no-cache");
response.setDateHeader("Expires", 0);
PrintWriter out = response.getWriter();
out.write("OK");
out.flush();
out.close();

jsp页面:
<logic:present name="treeNodes" scope="session" >
<logic:iterate id="menuItem" name="treeNodes" type="tangqy.vo.TreeNodeVO">
alert('here1=='+'<bean:write name="menuItem" property="nodeValue"/>');
alert('here2=='+'<bean:write name="menuItem" property="nodeID"/>');
</logic:iterate>
</logic:present>


现在问题是服务端调试没问题,List肯定放到session中去了,但在jsp页面中<logic:present name="treeNodes" scope="session" >
始终在session中找不到treeNodes对象

有哪位高人知道是怎么一回事情么?
...全文
349 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
qingyuan18 2007-05-17
  • 打赏
  • 举报
回复
已解决,用present和notEmpty标签是一样的,问题出在ajax方式没有经过Struts的Action,这样的话是无法运用struts的标签库的,在做ajax请求时先提交到Action就可以了
wanchao2001 2007-04-30
  • 打赏
  • 举报
回复
request.getSession(true).setAttribute("treeNodes",lsTmp);

改为
request.getSession().setAttribute("treeNodes",lsTmp);

试试
happylion2008 2007-04-30
  • 打赏
  • 举报
回复
yuanbin_1983() 正解。
为什么用present呢?
直接用NotEmpty判断该Session是否为空,然后用iterate跌代就行了,多容易啊。
在需要使用之的时候,用<bean:write name="" property=""/>就可以了。
yuanbin_1983 2007-04-30
  • 打赏
  • 举报
回复
<%@ page session="true" %>
<%
Object obj = session.getAttribute("treeNodes");
if(obj!=null){

%>
<logic:notEmpty>
<logic:iterate id="menuItem" name="treeNodes" type="tangqy.vo.TreeNodeVO">
</logic:iterate>
</logic:notEmpty>
<%}%>
Terry_Y 2007-04-30
  • 打赏
  • 举报
回复
同意楼上意见,你的
request.getSession(true).setAttribute("treeNodes",lsTmp);
语句没有执行成功,你可以在这个语句后面加一个getAttribute()试试就知道了。
通过AJAX提交的,你要去查看下AJAX关于如何获取request的资料。
For_suzhen 2007-04-30
  • 打赏
  • 举报
回复
<logic:present name="treeNodes" scope="session" >
写法没有问题啊(个人认为)
你在服务器端debug 一下,看看session.getAttribute("treeNodes");是不是null,不是null的话,看看是不是Empty的,把里面的东西打印一下看看有没有值
zw_ydjysc 2007-04-30
  • 打赏
  • 举报
回复
<logic:present name="treeNodes" scope="session" >这句写错了
logic:present的name属性是指定相应的javaBean,你的treeNodes不是JavaBean!!!
jerrycccc2323 2007-04-29
  • 打赏
  • 举报
回复
换为转发试试request.getRequestDispatcher("/login.jsp").forward(request,res);
qingyuan18 2007-04-29
  • 打赏
  • 举报
回复
跟List的get方法有关系么?现在关键的问题是<logic:present name="treeNodes" scope="session" >
在session里面根本找不到treeNodes这个list,难道<logic:present>标签使用有误么?
qingyuan18 2007-04-29
  • 打赏
  • 举报
回复
我是用ajax提交到servelt里的,不用redirect转向操作啊~
nfsli926 2007-04-28
  • 打赏
  • 举报
回复
对list的get方法进行重写,form建立TempList的实例,在页面上用标签直接获得数据,


public class TempList extends ArrayList{
public Object get(int index){
if(index>this.size()){
return new VO();
}else{
return super.get(index);
}
}
}

81,095

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧