论坛首页 入门技术论坛

请问如何用struts2标签迭代输出ArrayList对象?

浏览 9689 次
该帖已经被评为新手帖
作者 正文
   发表时间:2008-03-05  
在Action里取得了ArrayList对象,并且ServletActionContext.getRequest().setAttribute("allstudent", arrayList);

表里有三个字段,请问如何借助OGNL在jsp页面里用struts2的iterator标签显示结果?
<s:iterator value="?" ...> value里应该写什么?
谢谢!
   发表时间:2008-03-05  
		<s:iterator id="item" value="itemList" status="stuts">
		<tr>
			<td class="<s:if test="#stuts.even">gray</s:if>">${stuts.count }&nbsp;</td>
			<td class="<s:if test="#stuts.even">gray</s:if>">${title }&nbsp;</td>
			<td class="<s:if test="#stuts.even">gray</s:if>">&nbsp;
				<c:if test="${not empty item.categoryId}">
					<fmt:message key="${item.categoryId}"/>
				</c:if>
			</td>
			<td class="<s:if test="#stuts.even">gray</s:if>">${ownerName }&nbsp;</td>
			<td class="<s:if test="#stuts.even">gray</s:if>">${totalTime }&nbsp;</td>
			<td class="<s:if test="#stuts.even">gray</s:if>">
				<c:if test="${item.status == 0}">无效</c:if>
				<c:if test="${item.status == 1}">有效</c:if>
			</td>
			<td class="<s:if test="#stuts.even">gray</s:if>">${description }&nbsp;</td>
		</tr>
		</s:iterator>

iterator标签中
    value:表示Ognl中的属性(简单的来说就是action中Collection的属性)
    id:相当于在标签中使用的单体参数,类似于<c:foreach />中的var,在遍历体中可以使用
    status:表示遍历体中当前状态。如上所示:stuts.count表示当前的次数;stuts.even表示当前是奇/偶行。

要注意的是在Struts2的iterator标签的遍历体中也可不带参数前缀,比如 <td class="<s:if test="#stuts.even">gray</s:if>">${title }&nbsp;</td> 表示item类中的title属性。可以省略 item. 的前缀。但如果同时用到了jstl的标签则需要加前缀,比如 <c:if test="${item.status == 0}">无效</c:if>
0 请登录后投票
   发表时间:2008-03-05  
谢谢回答,不过还是不明白。

我说详细点吧,目的很简单,就是输出数据库里一张表的内容,表里包含三个字段.

action代码如下:
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

import net.sims.services.StudentServices;

public class SearchStudentAction extends ActionSupport {
    private String studentid;
	private String name;
	private String classname;		
	
	public String getStudentid() {
		return studentid;
	}
	public void setStudentid(String studentid) {
		this.studentid = studentid;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getClassname() {
		return classname;
	}
	public void setClassname(String classname) {
		this.classname = classname;
	}

	public String execute()throws Exception{
		
	    try{
		StudentServices studentServices = StudentServices.getInstance();
		ArrayList arrayList = (ArrayList)studentServices.retrieveAllStudent();
		
		ServletActionContext.getRequest().setAttribute("allstudent", arrayList);
		return "success";
		
	    } catch (Exception ex) {
                ex.printStackTrace();
               return null;
         }        	

    }	
}


持久层用的是ibatis,<resultMap>代码如下:
  <resultMap id="studentResult" class="net.sims.entity.SimpleStudent">
    <result column="studentid" property="studentid" jdbcType="VARCHAR" />
    <result column="name" property="name" jdbcType="VARCHAR" />
    <result column="classname" property="classname" jdbcType="VARCHAR" />
  </resultMap>


不懂在jsp里用OGNL和struts2迭代标签应该怎么做?望高手看看应该如何写!
0 请登录后投票
   发表时间:2008-03-05  
问题已解决,知耻而后勇.
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics