当前位置: 代码迷 >> Java Web开发 >> struts2中iterator的用法,该如何处理
  详细解决方案

struts2中iterator的用法,该如何处理

热度:164   发布时间:2016-04-16 21:43:13.0
struts2中iterator的用法
不知道struts2中的iterator怎么迭代出我下面想要的东西

 
          private List lt;
          
          public List getLt() {
return lt;
}
public void setLt(List list) {
this.list = list;
}
            public String show(){
Session session = SessionFactory.getSession();
Transaction tx = session.beginTransaction();
    List lt = new ArrayList();
list = session.createQuery("from Talk ").list();
        Talk talks = new Talk();
for(int i = 0 ;i<list.size();i++){
         talks = (Talk)list.get(i);
            lt.add(i,talks.getTitle());
}
System.out.println(lx);
    tx.commit();
session.close();
return SUCCESS;
}

我先再jsp中使用struts2的iterator标签迭代出来   这里的    lt 和中的内容

曾经的jsp页面是这么写的  但是总是提示无任何信息在里面
<body>
     <s:if test="lt==null">
                           无任何信息在这里!
     </s:if>
     <s:else>
          <s:iterator value="lt" >
          <s:if test="lt!= null ">
                <s:property  value="lt" />
          </s:if>
             <s:else>
                          访问无效
             </s:else>
          </s:iterator>
     </s:else>
  </body>

------解决思路----------------------
 <s:iterator value="lt" > 这个可以这样写吗?貌似是 <s:iterator value="${lt}" >   struts标签好久没用了
------解决思路----------------------
1、最好不要用lt这个变量,这个和&lt是有冲突(可以换个变量名)
2、后台代码(get、set要对应,当然按照你目前的写法,其实是用不到setLt这个方法的)
public void setLt(List list) {
        this.list = list;
    }

应该是
public void setLt(List list) {
        this.lt= list;
 }

3、前台代码
<s:if test="lt==null">
    无任何信息在这里!
</s:if>
<s:else>
    <s:iterator value="lt"  id="st">


        <s:if test="%{#st!= null}">
            <s:property  value="#st.id" />
<s:property  value="#st.name" />
//继续添加你的代码
        </s:if>
        <s:else>
            访问无效
        </s:else>
    </s:iterator>
</s:else>

可以写成这样
这个时候的st就相当于你的talk这个表对应的bean对象

注意:所有涉及到lt的最好换掉,改为其它变量
  相关解决方案