1. 程式人生 > >【Web開發】Struts2標籤使用——控制標籤

【Web開發】Struts2標籤使用——控制標籤

Struts標籤庫分類

控制標籤:用於執行基本的條件流轉

1.if/else if/else標籤

test屬性控制該標籤是否顯示

<s:set name="dengji" value="85"/>
<s:if test="#dengji>=90">成績優秀</s:if>
<s:elseif test="#dengji>=80">成績良好</s:elseif>
<s:elseif test="#dengji>=60">成績合格</s:elseif>
<s:else>成績不合格</s:else>

2.iterator/append/merge/generator/subset/sort標籤

(1).iterator標籤 用於對集合型別的變數進行迭代輸出

value:用來指定被迭代輸出的集合
id:用來指定集合中元素的ID屬性,配合property進行輸出
status:用於指定該集合的status的別名,指定後會生成IteratorStatus例項物件,擁有以下方法:
int getCount(); 迭代元素個數
int getIndex(); 迭代元素當前索引
boolean getFirst(); 是否為第一個
boolean getEven(); 是否為偶
boolean getLast(); 是否最後一個
bolean getOdd(); 是否為奇
由於iteratorstatus物件並不是ognl的根物件因此訪問需要加上 #

<s:iterator value="{'Java程式設計 案例教程','JSP實踐教程','Struts2完全學習手冊'}" id="bookname">
    <s:property value="bookname" /><br>
</s:iterator>

昨天的儲存bookList也可以解決了:

<s:form action="addBookAction" namespace="/Book" method="addBook">
<s:iterator value="new int[3]" status="st">
<s:textfield name="bookList[%{#st.index}].name" label="圖書名稱"></s:textfield> <s:textfield name="bookList[%{#st.index}].price" label="圖書價格"></s:textfield> <s:textfield name="bookList[%{#st.index}].num" label="發行數量"></s:textfield> </s:iterator> <s:submit value="新增" /> </s:form>

iterator訪問Map集合的方法:
注意自定義集合的value需要有#,或value=“map”,map為action內的map物件

<s:iterator value="#{'a':'1','b':'2'}" id="bookname">
    <s:property value="bookname"/> <s:property value="key" /> <s:property value="value"/><br>
</s:iterator>

iterator訪問Map集合

(2).append/merge標籤
將多個集合物件連線起來,從而組成一個新的集合
id:用於定義連線後新集合的名字
param:用於指定一個子集合
append生成的新集合按照集合新增順序輸出,而merge標籤用於每個集合互動新增後輸出

<s:append id="newList_append">
    <s:param value="{'1:1','1:3','1:2'}"></s:param>
    <s:param value="{'2:1','2:2','2:3'}"></s:param>
</s:append>
<s:merge id="newList_merge">
    <s:param value="{'1:1','1:3','1:2'}"></s:param>
    <s:param value="{'2:1','2:2','2:3'}"></s:param>
</s:merge>
<h3>迭代輸出由append標籤產生的新集合</h3>
<s:iterator value="#newList_append" status="st">
    <ul <s:if test="#st.odd" >style="color:blue;"</s:if>>
    <li><s:property/></li>
    </ul>
</s:iterator>
<h3>迭代輸出由merge標籤產生的新集合</h3>
<s:iterator value="#newList_merge" status="st">
    <ul <s:if test="#st.odd" >style="color:blue;"</s:if>>
    <li><s:property/></li>
    </ul>
</s:iterator>

append與merge輸出順序對比
3.generator標籤
用於將一個字串按照指定分隔符分隔成多個子串,可以通過iterator標籤進行迭代輸出。
count:可選屬性,用於指定所生成集合中元素的總數
val:必選屬性,用於指定被解析的字串
separator:必選屬性,用於指定分隔符
converter:可選屬性,用於指定轉換器,將集合中的每個字元轉換成物件,轉換器必須一個繼承org.apache.struts2.util.IteratorGenerator.Converter的物件。

外部輸出兩種方式:

<s:generator val="'Java程式設計 案例教程,JSP實踐教程,Struts2完全學習手冊'" 
separator="," count="2" id="bookname">
</s:generator>
<s:iterator value="bookname" status="st">
    <li><s:property /></li>
</s:iterator>
<s:generator val="'Java程式設計 案例教程,JSP實踐教程,Struts2完全學習手冊'" 
separator="," count="2" id="bookname">
</s:generator>
<s:iterator value="#bookname" id="hello" status="st">
    <li><s:property value="hello"/></li>
</s:iterator>

內部輸出就不需要寫value了,當然寫也是可以的,剩下的與上面相同

<s:generator val="'Java程式設計 案例教程,JSP實踐教程,Struts2完全學習手冊'" 
separator="," count="2" id="bookname">
<s:iterator status="st">
    <li><s:property /></li>
</s:iterator>
</s:generator>

經過測試,在內部輸出後,該集合為空,用外部輸出無返回值。

4.subset標籤
用於從一個集合進行擷取,從而產生一個新的子集合
count:可選屬性,指定子集中元素的個數,預設取得源集合的所有元素
source:可選屬性,指定源集合,如果不指定,預設取得valueStack棧頂的集合,一般都會指定
start:可選屬性,指定從源集合的第幾個元素開始擷取,預設從第一個元素(即start=0)開始
decider:可選屬性,由開發者自己決定是否選中該元素

<s:subset source="{'aaa','bbb','ccc','ddd'}" count="3" start="1">
<s:iterator status="st">
    <li><s:property /></li>
</s:iterator>
</s:subset>

5.sort標籤
用於對指定的集合進行排序,但是排序規則要由開發者提供,即實現自己的Comparator例項
comparator:必選屬性,用於指定實現排序規則的Comparator例項
source:可選屬性,用於指定將要排序的集合。

MyComparator.java

package ch4;
import java.util.Comparator;
public class MyComparator implements Comparator{
    @Override
    public int compare(Object o1, Object o2) {
        // TODO Auto-generated method stub
        return o1.toString().length()-o2.toString().length();
    }   
}
<s:bean id="mycomparator" name="ch4.MyComparator"/>
<s:sort source="{'a','bbb','cc','dddd'}" comparator="#mycomparator">
<s:iterator status="st">
    <li><s:property /></li>
</s:iterator>
</s:sort>

相關推薦

Web開發Struts2標籤使用——控制標籤

控制標籤:用於執行基本的條件流轉 1.if/else if/else標籤 test屬性控制該標籤是否顯示 <s:set name="dengji" value="85"/> <s:if test="#dengji>=90"&

Web開發Struts2標籤使用——資料標籤

資料標籤:用於實現獲得或訪問各種資料的功能 1.action標籤 (1)executeResult:可選屬性,為一個Boolean型別值,用來指定是否顯示action的執行結果,預設值為false,即不顯示。 (2)id:可選屬性,用來引用該act

Web開發Mean web開發 01-Express實現MVC模式開發

http scripts send javascrip 模板引擎 指令 開發環境 depend filter 簡介 Mean是JavaScript的全棧開發框架。更多介紹 用Express實現MVC模式開發是Mean Web全棧開發中的一部分。 Express 是一個基於

WEB開發微信網頁授權第三方登入介面(WEB登入)

 本文連結至:http://blog.csdn.net/hxker/article/details/50260669 第一步:獲取AppID AppSecret(不做解釋,自己去微信公眾平臺申請) 第二步:生成掃描二維碼,獲取code https://open

web開發docker中的資料庫

注:自從開始使用docker,部署方面的事情就簡單多了。使用docker構建的資料庫容器不用直接安裝,開啟後就可以使用,也比以前方便很多。下面將一些要點記錄下來。 下面的例子使用以下環境: - 系統:CentOS Linux release 7.4.1708 - docker:Docker versio

Web開發Hibernate配置檔案hibernate.cfg.xml解釋

參考書籍:輕量級JavaEE企業應用實戰(第5版) 所用jar包(在hibernate 官網上下載的jar包中的lib資料夾下): 用了user library來進行管理: 關於連線池: 連線池用於節省使用者申請訪問資料庫時的一系列連線操作,在伺

web開發關於EL表示式與引數傳遞

spring專案中,下面兩個html標籤語句是有區別的:<input type="hidden" id="id" name="id" value=${user.id }> 以及<in

FreeMarker程式開發異常/錯誤控制

可能的異常 關於FreeMarker發生的異常,可以分為如下幾類: 當載入和解析模板時發生異常:呼叫Configuration.getTemplate()方法,FreeMarker就要把模板檔案載入到記憶體中然後來解析它。在這期間,有兩種異常可能發生:因模板檔案沒有找到

Web開發Hibernate——持久化物件

所有內容均來自:輕量級JavaEE企業應用實戰(第五版) 1.Hiberante持久化類的要求 雖然Hibernate可以允許持久化類沒有標識屬性,但是這樣將導致Hibernate許多功能無法使用。且Hibernate建議使用可以為空的型別來作為標識屬性

Android 開發:UI控制元件之 ImageSwitcher 圖片切換控制元件的使用

1. ImageSwitcher 概要 1). ImageSwitcher 控制元件可以用在不同的影象之間切換,其中切換的過程可以採用動畫的方法,如淡入淡出的效果。 2). ImageSwitcher 需要一個影象工廠(ViewFactory)來建立用於顯示影象的Ima

VS開發免費打工仔:一個完善的ActiveX Web控制元件教程

作者 David Marcionek. 翻譯 免費打工仔 這個教程可以幫助你快速開發一個ActiveX控制元件。其中將要講解關於ActiveX開發的一些基礎概念,諸如方法(method)、屬性(propertiy)和事件(event),以及ActiveX控制元件和網頁

iOS開發---- 表格滾動時隱藏及顯示導航條和標籤

在iOS開發中,以瀑布流瀏覽圖片時通常希望能更多空間來展示內容,這樣我們就希望UIScrollView滾動時隱藏及顯示導航條和標籤欄。 我們希望向下滾動時顯示,向上滾動時隱藏,同時希望隱藏和顯示的動畫

Java Web開發關於資料庫的操作

1.mysql連線資料庫並建立資料庫連線物件 第一種: Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/javaweb?user=root&password=welcom123");

第 24講 struts2標籤-控制標籤

Struts2 控制標籤接上一節Ifelse 標籤:條件判斷標籤;在request設定值, <%@ page language="java" contentType="text/html; charset=UTF-8"    &nbs

Python web 開發social_django 整合第三方登入

 1、背景: 我們之前寫的一些介面僅僅是知道微博授權的一個流程,要把第三方授權登入的使用者的user_id  弄到我們的user_profile 中來才是 符合業務的需求的 因此gitbub上已經有一些開源的第三方外掛使用 social_app_django   &nbs

Python web 開發django 從請求到響應經歷了什麼?

  setting中註冊的middleware會將使用者request的資料經過這些middlware中有process_request方法和process_response方法註冊進入。 當用戶的request進入view之前會將這些process_request通通呼叫一遍

python web開發viewsets 配置認證類

我們在setting 裡面配置認證類 是一個全域性的,這個auth 類會對token 進行驗證,如果驗證失敗了會丟擲上面原始碼中的異常 但是有的介面,比如獲取首頁,商品列表頁 是不需要使用者 token的,因此這種全域性的配置是不行的,後端的解決方案: 將 token 認證拿到 view 中來做 以

Python web 開發Vue 和 jason web token 除錯

檢視前端Vue 原始碼 登入的request url 是這樣的   我們後端是這樣的   這樣請求的url 不統一,作為後端我們就要改 請求的url ,一般登入都是用的login    login Vue 檢視登入的邏輯 登入成功後,我們

Python web 開發自定義使用者認證函式

自定義 使用者認證類,記得之前在mxonline 裡面做過, 主要思路是:  第一步:在seeting 裡面設定自定義的backends    第二步:在user views 裡面寫檢視函式 自定義使用者認證函式要繼承ModelBackend,並且要重寫

Python web 開發雲片網傳送簡訊驗證碼

傳送簡訊驗證碼 是要使用第三方服務的,運營商是不可能提供對外的個人傳送簡訊服務功能,我們本身也沒有能力去傳送驗證碼,雲片網是目前提供這種服務使用率較高的服務商之一 我們先來看下雲片網國內單條傳送簡訊的api    根據api 寫了一個指令碼,這個appkey 我還沒申請 如