日期:2014-05-20  浏览次数:20708 次

小弟第一次发帖,问个很菜的问题,谢谢了
最近在了解J2EE开发相关的东西,自己学习做了一个小东西,后台是java,服务器用的tomcat6,使用了struts2框架,下面这段代码,我想实现的效果是按下“查看借书情况”后在下方以表格的方式显示出当前用户的借书记录,最后的结果是,浏览器里可以观察到表格出来了,但是表格里面的内容不是我放入session内的数据,而是"${myCurRecordList.RBname }" "${myCurRecordList.RBid }" "${myCurRecordList.ROut }"这三个表达式字符串,我自己调试的时候,后台可以查询到数据并已经放入List类型的myCurRecordList中,
Map<String, Object > session=(Map<String, Object >)context.getSession();
session.put("myCurRecordList", myCurRecordList);

debug模式下我已经确认后台查到的myCurRecordList被放入了session范围里,但是在前台就是取不出来,困扰了很久还是没有解决,麻烦各位帮我看看,谢谢啦!
HTML code
<form action="searchMyCurRecord.action" method="post">
       <table align="center">
       <input align="center" type="submit" value="查看借书情况"/>
                      
<% 
    if(session.getAttribute("myCurRecordList")==null);
    else{
        out.println("<caption><h4>当前借书情况</h4> </caption>");
        out.println("<tr>");
        out.println("<th>书名</th>");
        out.println("<th>图书编号</th>");
        out.println("<th>借书日期</th>");
        out.println("</tr>");
        out.println("<s:iterator value=\"#session.myCurRecordList\" id=\"myCurRecordList\" status=\"st\">");
        out.println("<tr>");
        out.println("<td>${myCurRecordList.RBname }</td>");
        out.println("<td>${myCurRecordList.RBid }</td>");
        out.println("<td>${myCurRecordList.ROut }</td>");
        out.println("</tr>");
        out.println("</s:iterator> ");
    }
%>                    
       </table>       
       </form>


------解决方案--------------------
Java code

搞不懂你页面中为什么要这么去输出

 out.println("<caption><h4>当前借书情况</h4> </caption>");
        out.println("<tr>");
        out.println("<th>书名</th>");
        out.println("<th>图书编号</th>");
        out.println("<th>借书日期</th>");
        out.println("</tr>");
        out.println("<s:iterator value=\"#session.myCurRecordList\" id=\"myCurRecordList\" status=\"st\">");
        out.println("<tr>");
        out.println("<td>${myCurRecordList.RBname }</td>");  <color>// 既然都用了strust2了标签了为什么这里要用el表达式</color>
        out.println("<td>${myCurRecordList.RBid }</td>");
        out.println("<td>${myCurRecordList.ROut }</td>");
        out.println("</tr>");
        out.println("</s:iterator> ");


反正都是在页面上。。。改成这样吧 
1. Map<String, Object > session=(Map<String, Object >)context.getSession(); 将object改为你的对象,不然页面上用标签循环的时候,无法识别具体对象,所以无法直接输出属性

2. 
<caption><h4>当前借书情况</h4></caption>
<tr>        
<th>书名</th>    
<th>图书编号</th>
<th>借书日期</th>
</tr>
<s:iterator value="#session.myCurRecordList" id="myCurRecordList" status="st">
    <tr>
        <td><s:property value='RBname' /></td> 
        <td><s:property value='RBid' /></td>
        <td><s:property value='ROut' />/td>
    </tr>
</s:iterator>

------解决方案--------------------
1. <s:iterator value=\"#session.myCurRecordList\" id=\"myCurRecordList\" status=\"st\"> 这里面的斜杠是干嘛的?