Struts迭代器(Iterator)遍历常见List的总结

本文详细介绍了如何使用Struts迭代器遍历不同类型的集合,包括List<String>、List<List<String>>及实体类列表List<Entity>。通过实际代码示例展示了在Java后端和JSP前端的应用,对比了各种遍历方式的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前写在GitHub Pages上,发表于2017-01-18

前言

由于常用Struts迭代器(Iterator)遍历List,而时间久了难免会忘,这里总结一下以备后观。为便于理解将给出后端Java、前端JSP(Struts标签)的实际代码。

遍历类型

  • List<String>
  • List<List<String>>
  • Entity
  • List<Entity>

代码演示

遍历List<String>

Java部分
if(list== null) {
    list= new ArrayList<String>();
    list.add("宋远桥");
    list.add("俞莲舟");
    list.add("俞岱岩");
    list.add("张松溪");
    list.add("张翠山");
    list.add("殷梨亭");
    list.add("莫声谷");
}
JSP(Struts标签)部分
<table border="1" cellpadding="1" cellspacing="1">
    <caption>武当七侠</caption>
    <tr>
        <!-- <s:property id="别名" value="后台List对象名" /> -->
        <!-- <s:if test="#别名!= null"> -->
        <s:iterator id="l" value="list">
            <td>
                <s:if test="#l!= null">
                    <s:property />
                </s:if>
            </td>
        </s:iterator>
    </tr>
</table>
效果图

暂略

遍历List<List<String>>

Java部分
List<List<String>> listList= null;
List<String> list= null;
if(listList== null) {
    listList= new ArrayList<List<List<String>>();
    list= new ArrayList<String>();
    list.add("姓名");
    list.add("别名");
    list.add("武学");
    list.add("成就");
    listList.add(list);
    list= new ArrayList<String>();
    list.add("宋远桥");
    list.add("宋大侠");
    list.add("绵掌");
    list.add("首位被前任罢免的掌门弟子");
    listList.add(list);
    list= new ArrayList<String>();
    list.add("俞莲舟");
    list.add("俞二侠");
    list.add("虎爪绝户手");
    list.add("七侠武功之最;武当派第二代掌门;太极拳传人");
    listList.add(list);
    list= new ArrayList<String>();
    list.add("俞岱岩");
    list.add("俞三侠");
    list.add("玄虚刀法");
    list.add("短期持有屠龙刀");
    listList.add(list);
    list= new ArrayList<String>();
    list.add("张松溪");
    list.add("无");
    list.add("内家拳");
    list.add("内家拳传人");
    listList.add(list);
    list= new ArrayList<String>();
    list.add("张翠山");
    list.add("铁画银钩;张五侠");
    list.add("二十四字倚天屠龙功");
    list.add("武当七侠阵亡第一人");
    listList.add(list);
    list= new ArrayList<String>();
    list.add("殷梨亭");
    list.add("殷六侠");
    list.add("天地同寿剑法");
    list.add("剑术为七侠最精");
    listList.add(list);
    list= new ArrayList<String>();
    list.add("莫声谷");
    list.add("无");
    list.add("绕指柔剑");
    list.add("死于叛徒师侄宋青书");
    listList.add(list);
}
JSP(Struts标签)部分
<table border="1" cellpadding="1" cellspacing="1">
    <caption>武当七侠简介</caption>
    <s:iterator id="ll" value="#request.listList" status="stat">
        <tr>
            <s:if test="#ll!= null">
                <s:iterator id="l" value="#request.listList.get(#stat.index)">
                    <td valign="middle" align="center">
                        <s:if test="#l!= null">
                            <s:property />
                        </s:if>
                    </td>
                </s:iterator>
            </s:if>
        </tr>
    </s:iterator>
</table>
效果图

暂略

遍历Entity

Java部分
DaXia daxia= null;
if(daxia== null) {
    daxia= new DaXia("张无忌", 21, "乾坤大挪移", "明教第34任教主");
}
JSP(Struts标签)部分
<table border="1" cellpadding="1" cellspacing="1">
    <caption>张无忌简介</caption>
    <tr>
        <!-- <s:property value="#对象名.属性名" /> -->
        <td>
            <s:property value="daxia.name" />
        </td>
        <td>
            <s:property value="daxia.age" />
        </td>
        <td>
            <s:property value="daxia.kungfu" />
        </td>
        <td>
            <s:property value="daxia.achievement" />
        </td>
    </tr>
</table>
效果图

暂略

遍历List<Entity>

Java部分
List<DaXia> list= null;
DaXia daxia= null;
if(list== null) {
    list= new ArrayList<DaXia>();
    daxia= new DaXia("令狐冲", 31, "独孤九剑", "仗剑天涯肆意人生");
    list.add(daxia);
    daxia= new DaXia("张无忌", 21, "乾坤大挪移", "明教第34任教主");
    list.add(daxia);
    daxia= new DaXia("萧峰", 45, "降龙十八掌", "侠之大者为国为民");
    list.add(daxia);
    daxia= new DaXia("扫地僧", 99, "易筋经", "宠辱不惊武至化境深明医理重剑无锋");
    list.add(daxia);
}
JSP(Struts标签)部分
<table border="1" cellpadding="1" cellspacing="1">
    <thead>
        <caption>数名大侠简介</caption>
        <th>姓名</th>
        <th>年龄</th>
        <th>绝学</th>
        <th>成就</th>
    </thead>
    <tbody>
        <s:iterator id="dx" value="#request.listList" status="stat">
            <tr>
                <td><s:property value="#dx.name" /></td>
                <td><s:property value="#dx.age" /></td>
                <td><s:property value="#dx.kungfu" /></td>
                <td><s:property value="#dx.achievement" /></td>
            </tr>
        </s:iterator>
    </tbody>
</table>
效果图

暂略

比较

比较List<String>和Entity

1.迭代器语法规则不同
遍历List<String>所需迭代器为<s:iterator value="后台List对象名">
遍历Entity不需迭代器
2.获取元素语法规则不同
遍历List<String>获取元素方式为<s:property />
遍历Entity获取元素方式为<s:property value="#对象名.属性名" />

比较List<List<String>>和List<Entity>

1.迭代器语法规则不同
遍历List<List<String>>由于List没有属性,取内层值需要借助迭代器的属性status以依次取内层值
遍历List<Entity>直接像静态变量一样对象打点访问(属性)即可
2.遍历层数不同
遍历List<List<String>>需要双层两个Iterator遍历
遍历List<Entity>外层使用遍历器,内层打点访问即可

总结

遍历方式各有长短,若非多表连接查询、所需显示表格的列数已经固定,一般用实体类(Entity)迭代。相反,所需显示表格的行数不确定或行列数均不确定时,再用实体类迭代将很无法实现,只能用List<String>List<List<String>>迭代。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值