action的execute方法: String sql = "from User where id = '" + id + "'"; List<User> all = userService.queryUserByID(sql);
if (!all.isEmpty()) {
User user = all.get(0);
ServletActionContext.getRequest().setAttribute("u", user);

return SUCCESS;JSP页面表单:<body>
   <table border="1">
   <tr>
   <td>ID</td>
   <td>${u.id}</td>
   </tr>
   <tr>
   <td>姓名</td>
   <td>${u.username}</td>
   </tr>
   ......
   </table>
</body>List经测试已经取到值了,但是JSP页面不知道怎么接收传过去的值,应该是少了条接收值的语句,是用<s:iterator>标签吗?求教高手怎么写这个语句?

解决方案 »

  1.   

    <s:iterator value="#request.u">
     <s:property value="username"/>
    </s:iterator>
      

  2.   

    也可以用<c:forEach> + el表达式
      

  3.   

    太懒了,就是<tr>,<td>标签的事,你把迭代标签放到<tr>外面
    <s:iterator value="#request.u">
     <tr>
       <td>
       <s:property value="username"/>
       </td>
     </tr>
    </s:iterator>
    能横向自己想办法竖啊
      

  4.   

    <s:iterator value="#request.u">  
    <table border="1">
      <tr>
      <td>ID</td>
      <td><s:property value="id"/></td>
      </tr>
      <tr>
      <td>姓名</td>
      <td><s:property value="username"/></td>
      </tr>
      ......
      </table>
    </s:iterator>
      

  5.   

    也可以使用jstl标签
    <c:foreach var="s" item="${u}">
    <tr>
    <td>
    ${s.username}
    </td>
    </tr>
    </s:iterator>
      

  6.   

    <s:iterator value="u">
     <tr>
    <td>
    ${username}
    </td>
    </tr>
    </s:iterator>这样也可以啊
      

  7.   


    哥,你要的就是struts2在页面的解析方式,而这人写的就是struts2的解析方式,完全是正确的,如果没有显示,肯定是你写错代码的问题了。至于布局,那你要自己去写了。
      

  8.   

    首先要保证是struts2才能使用<s:iterator也要保证jar包是足够的
    页面也要加上
    <%@ taglib prefix="s" uri="/struts-tags"%> 
      

  9.   

    struts传过来的值不是都可以用el表达式取出来的,不太熟悉的话就建议用struts标签
      

  10.   

    <s:iterator value="集合对象" id="每次迭代的引用" status="迭代状态实例">
       标签体
    </s:iterator>
      

  11.   

    我也遇到这个悲剧的问题,action可以取到值,就是传不到jsp页面遍历,两个标签我都用了!楼主搞定记得回复一下小弟!郁闷啊....
      

  12.   


    应该不是el表达式的问题,因为有几个别的页面显示的信息我就用的el表达式,都没出现异常。个人感觉应该是路径的问题。。楼上遇上同样问题的童鞋,好好看看路径有没有问题