Struts2教學
Struts2快速入門
Struts2 MVC架構
Struts2 是什麼?
Struts2 環境配置
Struts2 體系結構
Struts2 Hello World 實例
Struts2 配置文件
Struts2 Action/動作
Struts2 攔截器
Struts2 結果和結果類型
Struts2 值棧/OGNL
Struts2 文件上傳
Struts2 MySQL數據庫訪問
Struts2 發送郵件Email
Struts2 驗證框架
Struts2 基於XML校驗
Struts2 本地化/國際化(i18n)
Struts2 類型轉換
Struts2 主題和模板
Struts2 異常處理
Struts2 註釋
Struts2 註釋類型
Struts2 控件標籤
Struts2 iterator標籤
Struts2 if/else標籤
Struts2 merge標籤
Struts2 append標籤
Struts2 generator標籤
Struts2 數據標籤
Struts2 action標籤
Struts2 include標籤
Struts2 bean 標籤
Struts2 date 標籤
Struts2 param 標籤
Struts2 property 標籤
Struts2 set 標籤
Struts2 text 標籤
Struts2 url標籤
Struts2 表單標籤
Struts2 Ajax 標籤
Struts2和Spring集成
Struts2和Tiles集成
Struts2和Hibernate集成
Struts 2 hello world (XML版本)
Struts2註解示例
Struts2 @ResultPath註釋示例
Struts2 include(包含)多個配置文件
Struts2命名空間配置和解釋
Struts2開發者模式
如何刪除Struts2動作的後綴擴展名
使用Struts2動作
Struts2的ActionError&ActionMessage示例
Struts2模型驅動實例
Struts2映射攔截動作
Struts2重寫攔截器參數
Struts2攔截器棧的例子
Struts2 execAndWait攔截器例子
Struts2 <s:textfield>文本示例
Struts2 <s:password>密碼示例
Struts2 <s:hidden>隱藏值例子
Struts2 <s:textarea>文本域實例
Struts2 <s:radio>單選按鈕例子
Struts2單選預選按鈕值
Struts2 <s:checkbox>複選框例子
Struts2設置多個複選框缺省值
Struts2 <s:checkboxlist>多個複選框例子
Struts2 <s:select>下拉框例子
Struts2自動選擇下拉框的值
Struts2 <s:combobox>組合框的例子
Struts2 <s:head>示例
Struts2文件上傳例子
Struts2上傳多個文件例子
Struts2 <s:doubleselect>示例
Struts2 <s:updownselect>示例
Struts2 <s:optiontransferselect>示例
Struts2 <sx:datetimepicker>示例
Struts2 <sx:autocompleter>自動提示例子
Struts2 autocompleter+JSON例子
Struts2 <s:iterator>迭代器標籤示例
Struts2 if,elseif,else標籤示例
struts2 <s:append>標籤示例
Struts2 <s:generator>標籤示例
Struts2 <s:merge>標籤示例
Struts2 <s:sort>標籤示例
Struts2 <s:subset>標籤示例
Struts2 <s:a>標籤示例
Struts2 <s:action>標籤示例
Struts2 <s:bean>標籤示例
Struts2 <s:date>標籤示例
Struts2 <s:debug>標籤示例
Struts2 <s:include>標籤示例
Struts2 <s:i18n>標籤示例
Struts2 <s:param>標籤示例
Struts2 <s:property>標籤實例
Struts2 <s:push>標籤示例
Struts2 <s:set>標籤示例
Struts2 <s:texttag>標籤示例
Struts2 <s:url>標籤示例
Struts2資源包使用示例
Struts2本地化和國際化
Struts2 key鍵屬性示例
Struts2中文本地化問題
如何配置Struts2全局資源包
Struts2+Spring集成實例
Struts2+Quartz2調度集成實例
Struts2+Hibernate使用Full Hibernate Plugin集成
Struts2+Hibernate集成實例
Struts2+Spring+Hibernate集成實例
Struts2+Log4j集成
Struts2的FilterDispatcher和StrutsPrepareAndExecuteFilter有什麼不同?
Struts2獲取HttpServletRequest實例
Struts2獲取HttpServletResponse實例
如何獲取ServletContext對象
Struts2配置Action類的靜態參數
Struts2下載文件實例
Struts2和JSON實例

Struts2 表單標籤

form 標籤的列表是Struts的UI標籤的一個子集。這些標籤可以幫助渲染中需要Struts Web應用程序和用戶界面可以分爲三類。本章將帶你通過所有三種類型的UI標籤:

簡單UI標籤:

我們已經使用這些標籤已經在我們的例子中。讓我們來看看一個簡單的一些簡單UI標籤的視圖頁面email.jsp:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib prefix="s" uri="/struts-tags"%> <s:head/> Hello World <s:div>Email Form <s:text name="Please fill in the form below:" /> <s:form action="hello" method="post" enctype="multipart/form-data"> <s:hidden name="secret" value="abracadabra"/> <s:textfield key="email.from" name="from" /> <s:password key="email.password" name="password" /> <s:textfield key="email.to" name="to" /> <s:textfield key="email.subject" name="subject" /> <s:textarea key="email.body" name="email.body" /> <s:label for="attachment" value="Attachment"/> <s:file name="attachment" accept="text/html,text/plain" /> <s:token /> <s:submit key="submit" />

如果你是知道的HTML,那麼所有使用的標籤是很常見的HTML標籤與一個額外前綴s:隨着每個標籤和不同的屬性。當我們執行上面的程序中,我們可以得到以下的用戶界面,只要使用所有鍵設置正確的映射。

Struts

如圖所示,s:head產生Struts2的應用程序所需的javascript和樣式表元素。

接下來,我們有s:div和s:text元素。s:div被用來渲染HTML DIV元素。這是非常有用的當混合使用HTML和Struts標籤。對於這些人來說,他們有選擇使用s:div來呈現一個div。 

s:text如圖所示用於在屏幕上呈現文本。

接下來我們有s:form標籤。 s:form標籤決定提交表單的action屬性。因爲我們有一個文件上傳元素的形式,我們必須設置enctype屬性multipart。否則,我們就可以保留此空白。

在表單標籤的末尾,我們有s:submit標籤。這是用來提交表單。當提交表單時,所有的表單值提交到指定的動作在s:form標籤。

s:form裏面,我們有一個隱藏的屬性稱爲secret。這使得一個隱藏的元素在HTML中。在我們的案例中,「祕密」的元素值「abracadabra」。此元素向最終用戶是不可見的,並用於承載的狀態下,從一個視圖。 

接下來,我們有s:label, s:textfield, s:password 和 s:textarea標籤。這些用於呈現標籤,輸入字段,密碼和文本區域分別。我們所看到的這些動作「Struts - 發送電子郵件」例子。這裏要注意的最重要的事情是使用「key」屬性。 「key」屬性用於獲取這些控件從屬性文件中的標籤。

然後,我們有 s:file標記使得輸入文件上傳組件。該組件允許用戶上傳文件。在這個例子中,我們使用了「accept」 參數位置s:file 指定允許上傳的文件類型的文件標記。 

最後,我們有s:token 標籤。令牌的標籤,這是用來找出雙提交表單是否已經生成一個獨特的標記。

表單呈現時,一個隱藏的變量被放置令牌值。讓我們說,例如令牌是「ABC」。當表單提交時,Struts過濾器會檢查對存儲在會話的令牌令牌。如果匹配,它消除了從會話令牌。現在,如果意外形式(無論是通過刷新或通過點擊瀏覽器的後退按鈕)重新提交,表單將被重新提交「ABC」作爲標記。在這種情況下,過濾器將檢查對再次存儲在會話中的令牌的令牌。但由於令牌「ABC」已經從會話中刪除,這將不匹配和Struts的過濾器將拒絕請求。

組 UI 標籤:

組UI標籤被用來創建單選按鈕,複選框。讓我們來看看一個簡單的視圖頁的helloWorld.jsp的複選框和單選按鈕標籤:

<%@ page contentType="text/html; charset=UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> Hello World <s:head /> <s:form action="hello.action"> <s:radio label="Gender" name="gender" list="{'male','female'}" /> <s:checkboxlist label="Hobbies" name="hobbies" list="{'sports','tv','shopping'}" />

當我們執行上述程序的輸出將看起來類似於以下內容:

Struts

現在讓我們來看看這個例子。在第一個例子中,我們創建了一個簡單的單選按鈕,「Gender」的標籤。單選按鈕標籤的name屬性是強制性的,所以我們指定一個名稱是「Gender」。然後我們提供一個列表的性別。這份名單是填充值「male」和「female」。因此,在輸出中,我們得到了一個單選按鈕,其具有兩個值。

在第二個例子中,我們創建了一個複選框列表。這是收集用戶的愛好。用戶可以有一個以上的愛好,因此,我們所使用的複選框,而不是單選按鈕。該複選框被填充列表"sports", "Tv" 和 "Shopping"。這就提出了一個複選框列表的愛好。

選擇 UI 標籤:

讓我們來探討Struts提供的選擇標記的不同變化。讓我們來看看一個簡單的視圖頁的helloWorld.jsp的select標籤:

<%@ page contentType="text/html; charset=UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> Hello World <s:head /> <s:form action="login.action"> <s:select name="username" label="Username" list="{'Mike','John','Smith'}" /> <s:select label="Company Office" name="mySelection" value="%{'America'}" list="%{#{'America':'America'}}"> <s:optgroup label="Asia" list="%{#{'India':'India','China':'China'}}" /> <s:optgroup label="Europe" list="%{#{'UK':'UK','Sweden':'Sweden','Italy':'Italy'}}" /> <s:combobox label="My Sign" name="mySign" list="#{'aries':'aries','capricorn':'capricorn'}" headerKey="-1" headerValue="--- Please Select ---" emptyOption="true" value="capricorn" /> <s:doubleselect label="Occupation" name="occupation" list="{'Technical','Other'}" doubleName="occupations2" doubleList="top == 'Technical' ?
{'I.T', 'Hardware'} : {'Accounting', 'H.R'}" />

當我們執行上述程序的輸出將看起來類似於以下內容:

Struts

現在讓我們通過個別情況下,一個接一個。

  • 首先,select標籤生成的HTML選擇框。在第一個例子中,我們創建了一個簡單的選擇框「username」和「username」標籤。選擇框將被填充一個列表,其中包含Mike, John 和 Smith的名字。

  • 在第二個例子中,我們的公司總部設在美國。它還擁有全球辦事處,在亞洲和歐洲。我們要顯示一個選擇框辦事處,但大陸的名稱,我們要進行分組的全球辦事處。這是optgroup就派上用場了。我們使用s:optgroup標籤來創建新組。我們給一個標籤和一個單獨的列表。

  • 在第三個例子中,使用組合框。組合框是一個輸入字段和一個選擇框的組合。用戶可以選擇從選擇框中的值,在這種情況下,輸入字段自動填入用戶已選擇的值。如果用戶直接輸入一個值,然後選擇框沒有值將被選中。

  • 在我們的例子中,我們有太陽標誌的組合框列出。選擇框允許用戶輸入他的太陽星座,如果它不是在列表中只列出了四個條目。我們還添加一個頭項的選擇框。頭項是一個選擇框的頂部顯示。在我們的例子中,我們要顯示 "Please Select"。如果用戶不選擇什麼,那麼我們假設-1的值。在某些情況下,我們不希望用戶選擇一個空值。在這些條件下,一會的的「emptyOption」屬性設置爲false。最後,在我們的例子中,我們提供的「capricorn」組合框的默認值。

  • 第四個例子,我們有一個雙選。使用雙重選擇,當想顯示了兩個選擇框。在第一個選擇框選擇的值確定出現在第二個選擇框。在我們的例子中,第一個選擇框顯示"Technical" 和 "Other"。如果用戶選擇技術,我們將在第二個選擇框,顯示IT和硬件。否則,我們將顯示會計和人力資源。使用「list」和「doubleList」將屬性,如示例中所示,這是可能的。

在上面的例子中,我們做了比較,看看如果頂部的選擇框等於介紹技術。如果確實如此,那麼,我們顯示IT和硬件。我們還需要給機頂盒的名稱("name='Occupations')和底下的框中(doubleName='occupations2')。