我在action中取到一个
List<Model> list=new ArrayList<Model>();
Model 里有一个Name字段
并保存在session范围。到页面<s:iterator></s:iterator>怎么使用,输出list里的数据。

解决方案 »

  1.   

    <code>
     <!-- 通过从Action取值  需要加上# 如果通过Action属性获取则不要加#-->
       <s:iterator value="#list" var="model">
       <tr>
       <td>&nbsp;${model.id}
       <!-- 只要是字符串发方法都可以直接使用 -->
       <!-- 中间变量可以通过#变量名来引用  如#book -->
       <!-- OGNL在当前对象在每点的表达式值存放在this中可以通过#this来引用
       如: list.size().(#this>100?2*#this:20+#this)
        -->
       <!--如果需要访问的属性属于根对象,则可以直接访问该属性-->
       <s:property value="model.属性"/>
         
       </s:iterator>
    </code>Name字段
    并保存在session范围  用el表达式取 ${sessionScope.name}
      

  2.   

    Model:
    public class BookModel { private int ID;
    private String BookName;
    ....省略set。get方法
    }
    action:public String execute() throws Exception {
    BookModel bm=new BookModel();
    bm.setBookName("bkName");
    bm.setID(1);           
    BookModel bm1=new BookModel();
    bm1.setBookName("bkName2");
    bm1.setID(2);
    List<BookModel> list=new ArrayList<BookModel>();
    list.add(bm);
    list.add(bm1);
    HttpServletRequest request = ServletActionContext.getRequest();
    HttpSession session = request.getSession();
    session.setAttribute("booklist", list);
    return SUCCESS;
    }
    jsp:<s:iterator value="#session.booklist" var="list">
    书名: <s:property value="list.BookName" />
    ID:<s:property value="list.ID" /></s:iterator>
    我是这样写的  怎么不行啊  .......
      

  3.   

    List<BookModel> list=new ArrayList<BookModel>();
    你这个是局部变量  需要变成全局变量、
      

  4.   

    并且需要setter  getter 
    而且你的session 根本也去掉没有用到、List<BookModel> list=new ArrayList<BookModel>();
    //setter and  getterpublic String execute() throws Exception {
    BookModel bm=new BookModel();
    bm.setBookName("bkName");
    bm.setID(1);   
    BookModel bm1=new BookModel();
    bm1.setBookName("bkName2");
    bm1.setID(2);list.add(bm);
    list.add(bm1);return SUCCESS;
    }<s:iterator value="list" var="list">
    书名: <s:property value="list.BookName" />
    ID:<s:property value="list.ID" />
    </s:iterator>
    另外建议   变量第一到三的字母尽量少大写、有时候setter会有问题
      

  5.   


    <code>
    通过从Action取值  需要加上#
    ActionContext.getContext().put("booklist", booklist);
    session 里面你用el表达式取下试一下
    <code>
      

  6.   


    循环
    <s:iterator value="#session.list" var="i">session表示范围 ,也可以用attr表示任意匹配取值
    ${i.name}
      

  7.   

    list不用setter,getter直接保存在session范围不行吗?不是放在request范围
      

  8.   

    直接把list放在session范围不就不用写list的setter。getter了吗?不是放在request范围
      

  9.   

    还有就是 <s:iterator value="list" var="i"></s:iterator>标签中的东西都不会输出。标签中随便放几个字符页面上都不会输出的。