struts2的s:iterator 標簽 詳解

struts2的s:iterator 可以遍歷 數據棧里面的任何數組,集合等等 以下幾個簡單的demo:
s:iterator 標簽有3個屬性:
??? value:被迭代的集合
??? id?? :指定集合里面的元素的id
??? status 迭代元素的索引
1:jsp頁面定義元素寫法 數組或list

<s:iterator value="{'1','2','3','4','5'}" id='number'>
??? <s:property value='number'/>A
</s:iterator>
打印結果為: 1A2A3A4A5A
2:索引的用法
如果指定了status,每次的迭代數據都有IteratorStatus的實例,它有以下幾個方法
int getCount()返回當前迭代了幾個元素
int getIndex()返回當前元素索引
boolean isEven()當然的索引是否偶數
boolean isFirst()當前是否第一個元素
boolean isLast()
boolean isOdd()當前元素索引是否奇數
<s:iterator value="{'a','b','c'}" id='char' status='st'>
??? <s:if test="#st.Even">
??????? 現在的索引是奇數為:<s:property value='#st.index'/>
??? </s:if>
??? 當前元素值:<s:property value='char'/>
</s:iterator>
3:遍歷map
value可以直接定義為:
value="#{"1":"a","2":"b"}"
每個元素以都好隔開。元素之間的key和value 冒號隔開
value也可以是數據棧里面的java.util.Map對象
遍歷寫法如下:
<s:iterator value="map" id="id" status="st">
???? key : <s:property value='key'/>
???? value:<s:property vlaue='value'/>
</s:iterator>
當然key 和value 都可以使java 的 Object
3:遍歷數據棧.簡單的List類,
List<Attr>
class Attr{String attrName;String getAttrName(){return "123";}}
<s:iterator value="label" id="id">
??? <s:property value="#id.attrName" />
</s:iterator>
當然value 還可以寫成 value="%{label}" label可以有.操作
label的屬性List 可以寫成value="%{label.list}" 相當于:getLabel().getList();
4:遍歷2個list;
List<AttrName> attrN {color,size,style}
List<AttrValue> attrV {red,20,gay}
這2個list的元素是一一對應的,一個attrN對應一個attrV
< index??? is : <s:property value='status.index'/>
attrName is : <s:property value='id'/> or <s:property value='%{id}'/>
attrName is : <s:property value='%{attrV[#status.index]}'/>
</s:iterator>??
iterator

描述:
用于遍歷集合(java.util.Collection)或枚舉值(java.util.Iterator)。

參數:

必需 類型 @ page contentType"text/html; charset=UTF-8%>
@ page import""
@ page import""
@ taglib prefix"" =/struts-tags%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

???? List list new ArrayList();
???? list.add(Max);
???? list.add(Scott);
???? list.add(Jeffry);
???? list.add(Joe);
???? list.add(Kelvin);
???? request.setAttribute(names, list);

<html>
????<head>
????????<title>Iterator</title>
????</head>
????<body>
????????<h3>Names: </h3>
????????<!--
???????????? 1、此處的空property元素用于獲得當前iterator的值
???????????? 2、status被設成stuts,在iterator的里面就可以通過#stuts取得IteratorStatus的對象。IteratorStatus類包含當前序號信息,如是否第一個或最后一個,是否為奇數序號。這些信息在我們做格式化的時候,顯得非常有用。
????????-->

????????<ol>
????????????<s:iterator value="#request.names" status="stuts">????????????????
????????????????<s:if test="#stuts.odd == true">

????????????????????<li>White <s:property /></li>
????????????????</s:if>
????????????????<s:else>
????????????????????<li style="<s:property /></li>
????????????????</s:else>
????????????</s:iterator>
????????</ol>
????</body>
</html>

在struts2中,iterator標簽是很好用的,但也要注意一下.舉個例子,
如果要在每行中只顯示兩條記錄,這個經常用到的例子來的了,可以這樣用:
<table width="800px" align="center">
?? <tr>
???? <s:iterator value="songs" status="st">??
????????
????????????? <td>
??????????????? <input
???????????????? type="checkbox" name="songIds" id="<s:property value='id'/>" value="<s:property value='id'/>"><label for="<s:property value='id'/>" class="checkboxLabel"><s:property value="name"/>
???????????? </td>
??????????????
?????????????????? <s:if test="#st.modulus(2)==0">
????????????????????? <s:if test="#st.last">
?????????????????????? </tr></s:if>
????????????????????? <s:else>
?????????? ??????????????? </tr><tr></s:else>
???????? </s:if>
??? </s:iterator>
??
?? </table>
這里無非就是要注意?? <s:if test="#st.modulus(2)==0">
來判斷整除2是否為0,(也可以用<s:if test="#st.getIndex()%2==0)
??? 并且注意如下的使用 #st.last,判斷是否到了最后一條記錄,并且注意:
iterator標簽有如下方法:
boolean isEven() 當前迭代元素索引是否為偶數;
boolean isOdd() 當前迭代元素索引是否為奇數;
boolean isLast() 是否為最后一條元素;
boolean isFirst() 是否為第一條元素。
有以上元素,那么判斷何時加入tr就非常方便。

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

若采用s2,則可以將變量賦值在action的屬性變量(需有get,set)

<s:iterator id="roles" value="currole" status="status" >
?? ????<tr>
?? ?????<td colspan="4">${roles.ROLE_NAME }</td>
?? ????</tr>
?? ???</s:iterator>

?

currole為屬性變量

轉載于:https://www.cnblogs.com/plzdaye/p/3961238.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/260005.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/260005.shtml
英文地址,請注明出處:http://en.pswp.cn/news/260005.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Protocol Buffers的應用

1. Protocol Buffers的介紹 Protocol buffers are Google’s language-neutral, platform-neutral, extensible mechanism for serializing structured data – think XML, but smaller, faster, and simpler. You define how you want your data to be structured once, then …

編程提高:一天一道編程題

1.文本操作 逆轉字符串——輸入一個字符串&#xff0c;將其逆轉并輸出。 拉丁豬文字游戲——這是一個英語語言游戲。基本規則是將一個英語單詞的第一個輔音音素的字母移動到詞尾并且加上后綴-ay&#xff08;譬如“banana”會變成“anana-bay”&#xff09;。可以在維基百科上了…

android自驗簽名證書,沒有以前的互聯網連接,無法驗證Android自簽名證書

使用SSL基礎架構&#xff1a;我們有一個有效的客戶端/服務器設置,其中Android版本4.2和4.4的手機充當客戶端,必須通過其自簽名SSL證書驗證服務器.問題&#xff1a;只要設備在嘗試連接之前至少有一次互聯網訪問權限,服務器證書驗證就會起作用.但是,如果執行恢復出廠設置且設備直…

asp.net緩存(二)

ASP.NET頁面局部緩存 有時緩存整個頁面是不現實的&#xff0c;因為頁的某些部分可能在每次請求時都需要變化。在這些情況下&#xff0c;只能緩存頁的一部分。顧名思義&#xff0c;頁面部分緩存是將頁面部分內容保存在內存中以便響應用戶請求&#xff0c;而頁面其他部分內容則為…

學習C# - Hello,World!

第一天學C#,開始學著寫一些學習筆記&#xff0c;看了一下傳智播客的視頻&#xff0c;按照傳智播客的教學順序&#xff0c;開始學習。 class Program{static void Main(string[] args){Console.WriteLine("Hello World!");//自動添加回車換行Console.Write("Hell…

android獲取button寬度,android – 如何獲得Button的高度和寬度

我創建了一系列按鈕.現在我想找到按鈕的高度和寬度,為此我使用了getWidth()和getHeight().但問題是它總是返回0.為什么會發生這種情況&#xff1f;我發送了我的代碼,請檢查是否有任何問題.int x,y;LinearLayout layoutVertical (LinearLayout) findViewById(R.id.liVLayout);L…

java執行sql列名無效_嵌套異常是java.sql.SQLException:無效的列名ORACLE

我嘗試在Java中使用JdbcTemplate執行以下oracle查詢&#xff1a;select RESOURCE_IDfrom REPRO_PRINTING_JOBwhere (USER_ID? and PRINTING_CENTER_ID?)group by RESOURCE_IDunion allselect RESOURCE_IDfrom REPRO_PRINTING_JOB_OLDwhere (USER_ID? and PRINTING_CENTER_ID…

(七)Maven使用的最佳實踐

這里說一下在使用Maven過程中不是必須的&#xff0c;但十分有用的幾個實踐&#xff0c;關鍵時刻或許能解決您的問題。 1.設置MAVEN_OPTS環境變量 通常需要設置MAVEN_OPTS的值為-Xms128m -Xmx512m&#xff0c;因為Java默認的最大可用內存往往不能夠滿足Maven運行的需要&#xff…

android beam傳輸速率,無線網絡的速率為何不能達到最大值

1、無線速率可以達到最大值&#xff0c;只是發送速率和傳輸流量是兩個概念&#xff0c;通俗點講&#xff0c;無線的發送速率是把信號以指定速率發出去(信號好的時候以高速率發&#xff0c;信號差的時候以低速率發)。傳輸流量是指單位時間內傳輸的數據量&#xff0c;大部分用戶關…

【SMTP 補錄 Apache服務】

【補錄&#xff0c;續】1.【配置空殼郵件接受】【mta】【前置&#xff1a;在/etc/named.rfc1912.zones 添加一個可以接受郵件的域hxl.org&#xff08;與你數據庫中寫的向對應&#xff09;,這個域的所在ip就是你機子的&#xff0c;因為要從你的機子轉發】 【配置該機的vim/etc/…

image打開rgb16 qt_QT中顯示圖像數據

一般圖像數據都是以RGBRGBRGB……字節流的方式(解碼完成后的原始圖像流)&#xff0c;我說成字節流&#xff0c;那就表明R&#xff0c;G&#xff0c;B的值各占一個字節&#xff0c;在編程時表示的就是unsigned char * data。我們先來看一下QT中的QImage對象。在加載data數據前&a…

開啟chrome默認支持ipv6

在快捷方式后面的屬性后面輸入 --enable-ipv6 以下為轉載&#xff1a; [轉載]chrome開啟或關閉IPV6方法 (2012-05-27 17:54:06) 轉載▼ 標簽&#xff1a; 轉載 分類&#xff1a; 技術 原文地址&#xff1a;chrome開啟或關閉IPV6方法作者&#xff1a;余鯤濤 chrome和firefox都是…

Nginx安裝部署

轉&#xff1a;http://www.cnblogs.com/zhuhongbao/archive/2013/06/04/3118061.html Nginx ("engine x") 是一個高性能的 HTTP 和 反向代理 服務器&#xff0c;也是一個 IMAP/POP3/SMTP 代理服務器。 Nginx 是由 Igor Sysoev 為俄羅斯訪問量第二的 Rambler.ru 站點開…

android ble 連續讀寫,Android BLE實現對藍牙的讀寫

【實例簡介】通過修改官方的demo實現對藍牙的讀寫操作&#xff0c;詳細http://blog.csdn.net/chenfengdejuanlian/article/details/45787123【實例截圖】【核心代碼】BluetoothLe_demo0└── BluetoothLe_demo0├── AndroidManifest.xml├── bin│ ├── AndroidManife…

一分鐘經理人

原創2016-12-0858沈劍 零、緣起近期公司再做管理者培訓&#xff0c;偶老大推薦了一本薄薄的《一分鐘經理人》&#xff0c;斯賓塞.約翰遜&#xff0c;花了1小時讀完有感&#xff0c;沉淀一篇閱讀筆記&#xff0c;故有此文。一、前言常見經理人有兩類&#xff1a;&#xff08;1&a…

python寫機器人程序_用Python寫的一個多線程機器人聊天程序

本人是從事php開發的, 近來想通過php實現即時通訊(兼容windows)。后來發現實現起來特別麻煩&#xff0c; 就想到python。聽說這家伙在什么地方都能發揮作用。所以想用python來做通訊模塊。。。所以主要學習pythonn的多線程和tcp連接。但是沒有用過python&#xff0c; 所有在學習…

[轉] 前端中的MVC

MVC是一種設計模式&#xff0c;它將應用劃分為3個部分&#xff1a;數據&#xff08;模型&#xff09;、展現層&#xff08;視圖&#xff09;和用戶交互&#xff08;控制器&#xff09;。其中&#xff1a; M - MODEL&#xff08;模型&#xff09; V - VIEW&#xff08;視圖&…

ipoo3可以用鴻蒙,iqooneo3支持無線充電嗎_iqooneo3可以無線充電嗎

iqoo neo3在不高的價格上還保證了自己的品質&#xff0c;有很高的性能&#xff0c;很不錯的屏幕。那么這款手機可以支持無線充電嗎&#xff1f;小編為大家介紹關于iqoo neo3的充電方面。1.iqoo neo3可以支持無線充電嗎iQOO Neo3 配備了 44W 超級閃充&#xff0c;屬于小刀&#…

紅帽Linux故障定位技術詳解與實例(1)

紅帽Linux故障定位技術詳解與實例(1) 2011-09-28 14:26 圈兒 BEAREYES.COM 我要評論(0) 字號&#xff1a;T | T在線故障定位就是在故障發生時, 故障所處的操作系統環境仍然可以訪問&#xff0c;故障處理人員可通過console, ssh等方式登錄到操作系統上&#xff0c;在shell上執行…

u2020 華為_華為5G網管U2020常用MML命令(很實用)

激活小區ACT NRCELL:;ACT NRDUCELL:;去激活小區DEA NRCELL:;DEA NRDUCELL:;查詢小區靜態信息LST NRCELL:;LST NRDUCELL:;查詢小區動態信息DSP NRCELL:;DSP NRDUCELL:;修改幀偏置MOD GNODEBPARAM:FRAMEOFFSET70728;修改子幀配比、時隙結構MOD NRDUCELL:NRDUCELLID0,DUPLEXMODECE…