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

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

前言

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

遍历类型

  • List
  • List>
  • Entity
  • List

代码演示

遍历List

Java部分
if(list== null) {
    list= new ArrayList();
    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:iterator id="l" value="list">
            <td>
                <s:if test="#l!= null">
                    <s:property />
                s:if>
            td>
        s:iterator>
    tr>
table>
效果图

暂略

遍历List>

Java部分

List> listList= null;
List list= null;
if(listList== null) {
    listList= new ArrayList>();
    list= new ArrayList();
    list.add("姓名");
    list.add("别名");
    list.add("武学");
    list.add("成就");
    listList.add(list);
    list= new ArrayList();
    list.add("宋远桥");
    list.add("宋大侠");
    list.add("绵掌");
    list.add("首位被前任罢免的掌门弟子");
    listList.add(list);
    list= new ArrayList();
    list.add("俞莲舟");
    list.add("俞二侠");
    list.add("虎爪绝户手");
    list.add("七侠武功之最;武当派第二代掌门;太极拳传人");
    listList.add(list);
    list= new ArrayList();
    list.add("俞岱岩");
    list.add("俞三侠");
    list.add("玄虚刀法");
    list.add("短期持有屠龙刀");
    listList.add(list);
    list= new ArrayList();
    list.add("张松溪");
    list.add("无");
    list.add("内家拳");
    list.add("内家拳传人");
    listList.add(list);
    list= new ArrayList();
    list.add("张翠山");
    list.add("铁画银钩;张五侠");
    list.add("二十四字倚天屠龙功");
    list.add("武当七侠阵亡第一人");
    listList.add(list);
    list= new ArrayList();
    list.add("殷梨亭");
    list.add("殷六侠");
    list.add("天地同寿剑法");
    list.add("剑术为七侠最精");
    listList.add(list);
    list= new ArrayList();
    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>
        
        <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

Java部分

List list= null;
DaXia daxia= null;
if(list== null) {
    list= new ArrayList();
    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和Entity

1.迭代器语法规则不同
遍历List所需迭代器为
遍历Entity不需迭代器
2.获取元素语法规则不同
遍历List获取元素方式为
遍历Entity获取元素方式为

比较List>和List

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

总结

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

你可能感兴趣的:(Java)