国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Struts 系列之二 ------- Struts標記庫

2019-11-18 15:10:07
字體:
來源:轉載
供稿:網友

  4.    struts標記庫

4.1 Bean標記

4.1.1    Bean復制標記

4.1.2    定義腳本變量標記

4.1.3    顯示bean屬性

4.1.4    消息國際化標記

4.2 邏輯標記

   4.2.1 條件標記

   4.2.2 重復標記

   4.2.3 轉發和重定向標記

4.3 Html標記

4.3.1 顯示表單元素和輸入控件

4.3.2 顯示錯誤信息的標記

4.3.3 其他HTML標記

    4.4 模板標記

 

4.Struts標記庫

jsp視窗組件所使用的 struts標記庫由四類標記組成:

l         Bean標記:用來在JSP頁中治理bean

l         邏輯標記:用來在JSP頁中控制流程

l         HTML標記:用來生成HTML標記,在表單中顯示數據,使用會話ID對URL進行編程

l         模板標記:使用動態模板構造普通格式的頁

4.1 Bean標記

這個標記庫中包含用于定義新bean、訪問bean及其屬性的標記。Struts框架提供了多種自定義標記用來在JSP頁中處理javaBean。這些標記被封裝在一個普通的標記庫中,在文件struts-bean.tld中定義了它的標記庫描述器。Bean標記庫將標記定義在四個子類別中:

l         創建和復制bean的標記

l         腳本變量定義標記

l         bean翻譯標記

l         消息國際化標記

4.1.1 Bean復制標記

可定義新bean,可復制現有bean,還可從現有bean復制屬性。

<bean:define>標記用來:

l         定義新字符串常數

l         將現有的bean復制到新定義的bean對象

l         復制現有bean的屬性來創建新的bean

  <bean:define>標記屬性:

  

屬性
 描述
 
Id
 新定義的bean腳本變量名稱,必須設置
 
Type
 定義引入腳本變量的類
 
Value
 為id屬性定義的腳本變量分配一個新的對象
 
Name
 目標bean的名稱。若value屬性沒有設置,這個屬性就必須設置
 
PRoperty
 Name屬性定義的bean的屬性名稱,用來定義新的bean
 
Scope
 源bean的作用域。若沒有設置,搜索范圍是從頁作用域到應用程序作用域
 
toScope
 目標bean的作用域。若沒有設置,默認值是頁作用域
 

例如:定義一個bean:

<bean:define id=”test” value=”this is a test”/>

源bean在頁作用域中被拷貝大哦請求作用域中的另一個bean:

<bean:define id=”targetBean” name=”sourceBean”

scope=”page” toScope=”request”/>

4.1.2 定義腳本變量的標記

從多種資源中定義和生成腳本變量,這些資源包括cookie,請求參數,HTTP標頭等等。屬性如下:

屬性
 描述
 
Id
 腳本變量和要定義的頁作用域屬性的名稱
 
Name
 cookie/標頭/參數的名稱
 
multiple
 假如這個屬性設置了任意一個數值,所有匹配的cookie都會被積累并存儲到一個Cookie[](一個數組)類型的bean里。若無設置,指定cookie的第一個值將作為Cookie類型的值
 
Value
 假如沒有匹配的cookie或數值,就返回這個屬性指定的默認值
 

例如:

<bean:cookie id=”myCookie” name=”userName”/>

腳本變量名稱是myCookie,用來創建這個屬性的cookie的名稱是userName。

<bean:header id=”myHeader” name=”Accept-Language”/>

腳本變量名稱是myHeader,請求標頭的名稱是Accept-Language.

<bean:parameter id=”myParameter” name=”myParameter”>

腳本變量名稱是myPatameter,它保存的請求參數的名稱也是myParameter.

<bean:include>標記將對一個資源的響應進行檢索,并引入一個腳本變量和字符串類型的頁作用域屬性。這個資源可以是一個頁,一個ActionForward或一個外部URL。與<jsp:include>的不同是資源的響應被存儲到一個頁作用域的bean中,而不是寫入到輸出流。屬性如下:

屬性
 描述
 
Id
 腳本變量和要定義的頁作用域屬性的名稱
 
Page
 一個內部資源
 
forward
 一個ActionForward
 
Href
 要包含的資源的完整URL
 

例如:

<bean:include id=”myInclude” page=”MyJsp?x=1”/>

腳本變量的名稱是myInclude,要檢索的響應來自資源MyJsp?x=1。

  

<bean:resource>標記將檢索web應用中的資源,并引入一個腳本變量和InputStream或字符串類型的頁作用域屬性。假如在檢索資源時發生問題,就會產生一個請求時間異常。屬性如下:

屬性
 描述
 
Id
 腳本變量和要定義的頁作用域屬性的名稱
 
Name
 資源的相對路徑
 
Input
 假如這個屬性不存在,資源的類型就是字符串
 

例如:

<bean:resource id=”myResource” name=”/WEB-INF/images/myResource.xml”/>

腳本變量的名稱是myResource,要檢索的資源的名稱是myResource.xml。

  

4.1.3 顯示Bean屬性

  標記庫中定義了<bean:write>標記,用來將bean的屬性輸送到封裝的JSP頁寫入器。這個標記與<jsp:getProperty>類似,屬性如下:

屬性
 描述
 
Name
 要進行屬性顯示的bean的名稱
 
property
 要顯示的屬性的名稱。假如這個屬性類有java.beans.PropertyEditor,getAsText()或toString 方法會被調用
 
Scope
 Bean的作用域,若沒有設置,搜索范圍是從頁到應用程序作用域
 
Filter
 假如設置true,屬性中的所有非凡HTML字符都將被轉化為相應的實體引用
 
Ignore
 假如設置false,當發現屬性時會產生一個請求時間異常,否則返回null
 

例如:

<bean:write name=”myBean” property=”myProperty” scope=”request”

 filter=”true”/>

myBean的屬性myProperty將會被顯示,作用域為請求,假如發現任何HTML非凡字符都將被轉化為相應的實體引用。

  

4.1.4 消息標記和國際化

strtus框架支持國際化和本地化。用戶在他們的計算機中定義自己所在的區域,當web應用程序需要輸出一條消息時,它將引用一個資源文件,在這個文件中所有的消息都使用了適當的語言。一個應用程序可能提供了很多資源文件,每個文件提供了用不同語言編寫的消息。假如沒有找到所選語言的資源文件,就將使用默認的資源文件。

struts框架對國際化的支持是使用<bean:message>標記,以及使用java.util數據包中定義的Locale和ResourceBundle類來實現Java2平臺對這些任務的支持。Java.text.MessageFormat類定義的技術可以支持消息的格式。利用此功能,開發人員不需了解這些類的細節就可進行國際化和設置消息的格式。

用strtus實現國際化和本地化:

第一步要定義資源文件的名稱,這個文件會包含用默認語言編寫的在程序中會出現的所有消息。這些消息以“要害字-值”的形式存儲,如下:

error.validation.location = The entered location is invalid

這個文件需要存儲在類的路徑下,而且它的路徑要作為初始化參數傳送給ActionServlet作為參數進行傳遞時,路徑的格式要符合完整Java類的標準命名規范。比如,假如資源文件存儲在WEB-INF/classes目錄中,文件名是applicationResources.properties,那么需要傳遞的參數值是ApplicationResources。假如文件在WEB-INF/classes/com/test中,那么參數值就應該是com.test. ApplicationResources.

為了實現國際化,所有的資源文件必須都存儲在基本資源文件所在的目錄中。基本資源文件包含的是用默認地區語言-本地語言編寫的消息。假如基本資源文件的名稱是ApplicationResources.properties,那么用其他特定語言編寫的資源文件的名稱就應該是ApplicationResources_xx.properties(xx為ISO編碼,如英語是en)。因此這些文件應包含相同的要害字,但要害字的值是用特定語言編寫的。

ActionServlet的區域初始化參數必須與一個true值一起傳送,這樣ActionServlet就會在用戶會話中的Action.LOCALE_KEY要害字下存儲一個特定用戶計算機的區域對象。現在可以運行一個國際化的web站點,它可以根據用戶計算機上的設置的區域自動以相應的語言顯示。

我們還可以使用特定的字符串來替換部分消息,就象用java.text.MessageFormat的方法一樣:

error.invalid.number = The number {0} is valid

我們可以把字符串{0}替換成任何我們需要的數字。<bean:message>標簽屬性如下:

屬性
 描述
 
Key
 資源文件中定義消息要害字
 
Locale
 用戶會話中存儲的區域對象的屬性名稱。若沒有設置,默認值是Action.LOCALE_KEY
 
Bundle
 在應用程序上下文中,存儲資源對象的屬性的名稱。假如沒有設置這個屬性,默認值是Action.MESSAGE_KEY
 
arg0
 第一個替換參數值
 
arg1
 第二個替換參數值
 
arg2
 第三個替換參數值
 
arg3
 第四個替換參數值
 

例如:資源文件中定義了一個消息:

info.myKey = The numbers entered are {0},{1},{2},{3}

我們可使用下面的消息標記:

<bean:message key=”info.myKey” arg0=”5” arg1=”6” arg2=”7” arg3=”8”/>

  這個信息標記輸出到JSP頁會顯示為:The numbers entered are 5,6,7,8

  

4.2 邏輯標記

邏輯庫的標記能夠用來處理外觀邏輯而不需要使用scriptlet。Struts邏輯標簽庫包含的標記能夠有條件地產生輸出文本,在對象集合中循環從而重復地產生輸出文本,以及應用程序流程控制。它也提供了一組在JSP頁中處理流程控制的標記。這些標記封裝在文件名為struts-logic.tld的標記包中。邏輯標記庫定義的標記能夠執行下列三個功能:

l         條件邏輯

l         重復

l         轉發/重定向響應

4.2.1 條件邏輯

struts有三類條件邏輯。第一類可以比較下列實體與一個常數的大小:

l         cookie

l         請求參數

l         bean或bean的參數

l         請求標頭

 以下列出了這一類標記:

標記
 功能
 
<equal>
 假如常數與被定義的實體相等,返回true
 
<notEqual>
 假如常數與被定義的實體不相等,返回true
 
<greaterEqual>
 假如常數大于等于被定義的實體,返回true
 
<lessEqual>
 假如常數小于等于被定義的實體,返回true
 
<lessThan>
 假如常數小于被定義的實體,返回true
 
<greaterThan>
 假如常數大于被定義的實體,返回true
 

  

這一類的所有標記有相同的屬性

屬性
 描述
 
Value
 要進行比較的常數值
 
Cookie
 要進行比較的HTTP cookie的名稱
 
Header
 要進行比較的HTTP請求標頭的名稱
 
parameter
 要進行比較的HTTP請求參數的名稱
 
Name
 假如要進行比較的是bean或bean的屬性,則這個屬性代表bean的名稱 
 
property
 要進行比較的bean屬性的名稱
 
Scope
 Bean的作用域,假如沒有指定作用域,則它的搜索范圍是從頁到應用程序
 

例如:

<logic:equal parameter=”name” value=”SomeName”>

        The entered name is SomeName

</logic:equal>

判定名為”name”的請求參數的值是否是”SomeName”。

<logic:greaterThan name=”bean” property=”prop” scope=”page” value=”7”>

The value of bean.Prop is greater than 7

</logic:greaterThan>

判定在頁的作用域中是否有一個名為”bean”的bean,它有一個prop屬性,這個屬性的值是否大于7。假如這個屬性能夠轉化為數值,就進行數值比較,否則就進行字符串比較。

第二類條件標記定義了兩個標記:

l         <logic:present>

l         <logic:notPresent>

它們的功能是在計算標記體之前判定特定的項目是否存在。標記的屬性和屬性值決定了要進行檢查的項目。

屬性
 描述
 
Cookie
 由這個屬性指定的cookie將被檢查是否存在
 
Header
 由這個屬性指定的請求標頭將被檢查是否存在
 
parameter
 由這個屬性指定的請求參數將被檢查是否存在
 
Name
 假如沒有設置property屬性,那么有這個屬性指定的bean將被檢查是否存在。假如設置了,那么bean和bean屬性都將被檢查是否存在。
 
property
 檢查有name屬性指定的bean中是否存在指定的屬性
 
Scope
 假如指定了bean的名稱,這就是bean的作用域。假如沒有指定作用域,搜索的范圍從頁到應用程序作用域。
 
Role
 檢查當前已經確認的用戶是否屬于非凡的角色
 
User
 檢查當前已經確認的用戶是否有特定的名稱
 

例如:

<logic:notPresent name=”bean” property=”prop” scope=”page”>

The bean property bean.prop is present

</logic:notPresent>

標記判定在頁作用域中是否存在一個名為”bean”的bean,這個bean有一個prop屬性。

第三類條件標記比較復雜,這些標記根據模板匹配的結果檢查標記體的內容。換句話說,這些標記判定一個指定項目的值是否是一個特定常數的子字符串:

l         <logic:match>

l         <logic:notMatch>

這些標記答應JSP引擎在發現了匹配或是沒有發現時計算標記主體。屬性如下:

屬性
 描述
 
Cookie
 要進行比較的HTTP cookie的名稱
 
Header
 要進行比較的的HTTP標頭 的名稱
 
parameter
 要進行比較的的HTTP請求參數的名稱
 
Name
 若要對bean或bean的屬性進行比較,這個屬性是用戶指定bean的名稱
 
location
 假如設置了這個屬性的值,將會在這個指定的位置(索引值)進行匹配
 
scope
 假如對bean進行比較,這個屬性指定了bean的作用域。假如沒有設置這個參數,搜索范圍是從頁到應用程序作用域
 
property
 要進行比較的bean的屬性名稱
 
value
 要進行比較的常數值
 

例如:

<logic:match parameter=”name” value=”xyz” location=”1”>

      The parameter name is a sub-string of the string xyz from index 1

</logic:match>

標記檢查名為”name”的請求參數是否是”xyz”的子字符串,但是子字符串必須從”xyz”的索引位置1開始(也就是說子字符串必須是”y”或”yz”)。

4.2.2 重復標記

在邏輯標記庫中定義了<logic:iterate>標記,它能夠根據特定集合中元素的數目對標記體的內容進行重復的檢查。集合的類型可以是java.util.Iterator,java.util.Collection

,java.util.Map或是一個數組。有三種方法可以定義這個集合:

l         使用運行時間表達式來返回一個屬性集合的集合

l         將集合定義為bean,并且使用name屬性指定存儲屬性的名稱。

l         使用name屬性定義一個bean,并且使用property屬性定義一個返回集合的bean屬性。

當前元素的集合會被定義為一個頁作用域的bean。屬性如下,所有這些屬性都能使用運行時表達式。

屬性
 描述
 
collection
 假如沒有設置name屬性,它就指定了要進行重復的集合
 
Id
 頁作用域bean和腳本變量的名稱,它保存著集合中當前元素的句柄
 
indexed
 頁作用域JSP bean的名稱,它包含著每次重復完成后集合的當前索引
 
Length
 重復的最大次數
 
Name
 作為集合的bean的名稱,或是一個bean名稱,它由property屬性定義的屬性,是個集合
 
Offset
 重復開始位置的索引
 
property
 作為集合的Bean屬性的名稱
 
Scope
 假如指定了bean名稱,這個屬性設置bean的作用域。若沒有設置,搜索范圍從頁到應用程序作用域
 
Type
 為當前定義的頁作用域bean的類型
 

例如:

<logic:iterate id=”currentInt”

collection=”<% =myList %>”

type=”java.lang.Integer”

offset=”1”

length=”2”>

    <% =currentint %>

    </logic:iterate>

代碼將從列表中的第一個元素開始重復兩個元素并且能夠讓當前元素作為頁作用域和java.lang.Integer類型的腳本變量來使用。也就是說,假如myList包含元素1,2,3,4等,代碼將會打印1和2。

4.2.3 轉發和重定向標記

轉發標記

<logic:forward>標記能夠將響應轉發給重定向到特定的全局ActionForward上。ActionForward的類型決定了是使用PageContext轉發響應,還是使用sendRedirect將響應進行重定向。此標記只有一個”name”屬性,用來指定全局ActionForward的名稱,例如:

<logic:forward name=”myGlobalForward”/>

重定向標記

<logic:redirect>標記是一個能夠執行HTTP重定向的強大工具。根據指定的不同屬性,它能夠通過不同的方式實現重定向。它還答應開發人員指定重定向URL的查詢參數。屬性如下:

屬性
 描述
 
Forward
 映射了資源相對路徑的ActionForward
 
Href
 資源的完整URL
 
Page
 資源的相對路徑
 
Name
 Map類型的頁名稱,請求,會話或程序屬性的名稱,其中包含要附加大哦重定向URL(假如沒有設置 property屬性)上的“名稱-值”參數。或是具有Map類型屬性的bean名稱,其中包含相同的信息(沒有設置property屬性)
 
Property
 Map類型的bean屬性的名稱。Bean的名稱由name屬性指定。
 
Scope
 假如指定了bean的名稱,這個屬性指定搜索bean的范圍。假如沒有設置,搜索范圍從頁到應用程序作用域
 
ParamID
 定義特定查詢參數的名稱
 
ParamName
 字符串類型的bean的名稱,其中包含查詢參數的值(假如沒有設置paramProperty屬性);或是一個bean的名稱,它的屬性(在paramProperty屬性中指定)包含了查詢參數值
 
paramProperty
 字符串bean屬性的名稱,其中包含著查詢參數的值
 
ParamScope
 ParamName定義的bean的搜索范圍
 

使用這個標記時至少要指定forward,href或page中的一個屬性,以便標明將響應重定向到哪個資源。

4.3 HTML標記

Struts HTML標記可以大致地分為以下幾個功能:

l         顯示表單元素和輸入控件

l         顯示錯誤信息

l         顯示其他HTML元素

4.3.1 顯示表單元素和輸入控件

struts將HTML表單與為表單操作而定義的ActionForm bean緊密聯系在一起。表單輸入字段的名稱與ActionForm bean里定義的屬性名稱是對應的。當第一次顯示表單時,表單的輸入字段是從ActionForm bean中移植過來的,當表單被提交時,請求參數將移植到ActionForm bean實例。

所有可以在<form>標記中使用的用來顯示HTML輸入控件的內嵌標記都使用下列屬性來定義Javascript事件處理器。

屬性
 描述
 
Onblur
 字段失去了焦點
 
Onchange
 字段失去了焦點并且數值被更改了
 
Onclick
 字段被鼠標點擊
 
Ondblclick
 字段被鼠標雙擊
 
Onfocus
 字段接收到輸入焦點
 
Onkeydown
 字段擁有焦點并且有鍵按下
 
onkeypress
 字段擁有焦點并且有鍵按下并釋放
 
Onkeyup
 字段擁有焦點并且有鍵被釋放
 
onmousedown
 鼠標指針指向字段并且點擊
 
onmousemove
 鼠標指針指向字段并且在字段內移動
 
onmouSEOut
 鼠標指針指向控件,但是指針在元素外圍移動
 
onmouseover
 鼠標指針沒有指向字段,但是指針在元素內部移動
 
Onmouseup
 鼠標指針指向字段,并且釋放了鼠標按鍵
 

<form>元素中能夠被定義的其他一般屬性有:

屬性
 描述
 
accesskey
 定義訪問輸入字段的快捷鍵
 
Style
 定義輸入字段的樣式
 
styleClass
 定義輸入字段的樣式表類
 
Tabindex
 輸入字段的tab順序
 

表單標記

<html:form>標記用來顯示HTML標記,可以指定AcitonForm bean的名稱和它的類名。假如沒有設置這些屬性,就需要有配置文件來指定ActionMapping以表明當前輸入的是哪個JSP頁,以及從映射中檢索的bean名和類。假如在ActionMapping指定的作用域中沒有找到指定的名稱,就會創建并存儲一個新的bean,否則將使用找到的bean。

<form>標記能夠包含與各種HTML輸入字段相對應的子標記。

<html:form>標記屬性如下:

屬性
 描述
 
Action
 與表單相關的操作。在配置中,這個操作也用來標識與表單相關的ActionForm bean
 
Enctype
 表單HTTP方法的編碼類型
 
Focus
 表單中需要初始化焦點的字段
 
Method
 表單使用的HTTP方法
 
Name
 與表單相關的ActionForm bean的名稱。假如沒有設置這個屬性,bean的名稱將會從配置信息中獲得
 
Onreset
 表單復位時的JavaScript事件句柄
 
Onsubmit
 表單提交時的JavaScript事件句柄
 
Scope
 搜索ActionForm bean的范圍。假如沒有設置,將從配置文件中獲取
 
Style
 使用的格式
 
styleClass
 這個元素的格式表類
 
Type
 ActionForm bean的完整名稱。假如沒有設置,將從配置文件獲得
 

例如:

<html:form action=”validateEmploee.do” method=”post”>

</html:form>

與表單相關的操作路徑是validateEmployee,而表單數據是通過POST傳遞的。對于這個表單來說,ActionForm bean的其他信息,如bean名稱類型,作用域,都是從表單指定操作的ActionMapping中檢索得到的:

<form-beans>

<form-bean name=”empForm” type=”com.example.EmployeeForm”/>

    </form-beans>

    <action-mappings>

    <action path=”/validateEmployee”

type=”com.example.ValidateExampleAction”

name=”empForm”

scope=”request”

input=”/employeeInput.jsp”>

<forward name=”sUCcess” path=”/employeeOutput.jsp”>

     </action>

    </action-mapping>

假如配置文件中包含上述信息,并且請求URI的*.do被映射到ActionServlet,與表單相關的ActionForm bean的名稱,類型和作用域分別是empForm,com.example.EmployeeForm和request.這些屬性也可以使用<html:form>標記屬性進行顯示的定義。

以下標記必須嵌套在<html:form>標記里

按鈕和取消標記

<html:button>標記顯示一個按鈕控件;<html:cancel>標記顯示一個取消按鈕。屬性如下:

屬性
 描述
 
Property
 定義在表單被提交時返回到服務器的請求參數的名稱
 
Value
 按鈕上的標記
 

復位和提交標記

<html:reset>和<html:submit>標記分別能夠顯示HTML復位按鈕和提交按鈕。

文本和文本區標記

<html:text>和<html:textarea>標記分別HTML文本框和文本區,屬性如下:

屬性
 描述
 
Property
 定義當表單被提交時送回到服務器的請求參數的名稱,或用來確定文本元素當前值的bean的屬性名稱
 
Name
 屬性被查詢的bean的名稱,它決定了文本框和文本區的值。假如沒有設置,將使用與這個內嵌表單相關的ActionForm的名稱
 

<html:text>標記還有以下屬性:

屬性
 描述
 
Maxlength
 能夠輸入的最大字符數
 
Size
 文本框的大小(字符數)
 

<html:textarea>標記特有的屬性如下:

屬性
 描述
 
Rows
 文本區的行數
 
Cols
 文本區的列數
 

檢查框和復選框標記

<html:checkbox>標記能夠顯示檢查框控件。<html:multibox>標記能夠顯示HTML復選框控件,請求對象在傳遞檢查框名稱時使用的getParameterValues()調用將返回一個字符串數組。屬性如下:

屬性
 描述
 
Name
 Bean的名稱,其屬性會被用來確定檢查是否以選中的狀態顯示。假如沒有設置,將使用與這個內嵌表單相關的ActionFrom bean的名稱。
 
Property
 檢查框的名稱,也是決定檢查框是否以選中的狀態顯示的bean屬性名稱。在復選框的情況下,這個屬性必須是一個數組。
 
Value
 當檢查框被選中時返回到服務器的請求參數的值
 

例如:

<html:checkbox property=”married” value=”Y”/>

一個名為married的檢查框,在表單提交時會返回一個”Y”.

文件標記

<html:file>標記可以顯示HTML文件控件。屬性如下:

屬性
 描述
 
Name
 Bean的名稱,它的屬性將確定文件控件中顯示的內容。假如沒設置,將使用與內嵌表單相關的ActionForm bean的名稱
 
property
 這個屬性定義了當表單被提交時送回到服務器的請求參數的名稱,以及用來確定文件控件中顯示內容的bean屬性名稱
 
Accept
 服務器能夠處理的內容類型集。它也將對客戶瀏覽器對話框中的可選文件類型進行過濾
 
Value
 按鈕上的標記,這個按鈕能夠在本地文件系統中瀏覽文件
 

單選鈕標記

<html:radio>標記用來顯示HTML單選鈕控件,屬性如下:

屬性
 描述
 
Name
 Bean的名稱,其屬性會被用來確定單選鈕是否以選中的狀態顯示。假如沒有設置,將使用與這個內嵌表單相關的ActionFrom bean的名稱。
 
property
 當表單被提交時送回到服務器的請求參數的名稱,以及用來確定單選鈕是否以被選中狀態進行顯示的bean屬性的名稱
 
Value
 當單選鈕被選中時返回到服務器的值
 

隱藏標記

<html:hidden>標記能夠顯示HTML隱藏輸入元素,屬性如下:

屬性
 描述
 
Name
 Bean的名稱,其屬性會被用來確定隱藏元素的當前值。假如沒有設置,將使用與這個內嵌表單相關的ActionFrom bean的名稱。
 
property
 定義了當表單被提交時送回到服務器的請求參數的名稱,以及用來確定隱藏元素當前值的bean屬性的名稱
 
Value
 用來初始化隱藏輸入元素的值
 

密碼標記

<html:passWord>標記能夠顯示HTML密碼控件,屬性如下:

屬性
 描述
 
maxlength
 能夠輸入的最大字符數
 
Name
 Bean的名稱,它的屬性將用來確定密碼元素的當前值。假如沒有設置,將使用與這個內嵌表單相關的ActionFrom bean的名稱。
 
property
 定義了當表單被提交時送回到服務器的請求參數的名稱,以及用來確定密碼元素當前值的bean屬性的名稱
 
redisplay
 在顯示這個字段時,假如相應的bean屬性已經被設置了數據,這個屬性決定了是否顯示密碼的內容
 
Size
 字段的大小
 

選擇標記

<html:select>標記能夠顯示HTML選擇控件,屬性如下:

屬性
 描述
 
multiple
 表明這個選擇控件是否答應進行多選
 
Name
 Bean的名稱,它的屬性確定了哪個。假如沒有設置,將使用與這個內嵌表單相關的ActionFrom bean的名稱。
 
property
 定義了當表單被提交時送回到服務器的請求參數的名稱,以及用來確定哪個選項需要被選中的bean屬性的名稱
 
Size
 能夠同時顯示的選項數目
 
Value
 用來表明需要被選中的選項
 

選項標記(這個元素需要嵌套在<html:select>標記里)

<html:option>標記用來顯示HTML選項元素集合,屬性如下:

屬性
 描述
 
collection
 Bean集合的名稱,這個集合存儲在某個作用域的屬性中。選項的數目與集合中元素的數目相同。Property屬性能夠定義選項值所使用的bean屬性,而labelProperty屬性定義選項標記所使用的bean的屬性
 
labelName
 用來指定存儲于某個作用域的bean,這個bean是一個字符串的集合,能夠定義<html:option>元素的標記(假如標志與值不相同)
 
labelProperty
 與collection屬性共同使用時,用來定義了存儲于某個作用域的bean,這個bean將返回一個字符串集合,能夠用來寫入<html:option>元素的value屬性
 
Name
 假如這是唯一被指定的屬性,它就定義了存儲于某個作用域的bean,這個bean將返回一個字符串集合,能夠用來寫入<html:option>元素的value屬性
 
property
 這個屬性在與collection屬性共同使用時,定義了每個要顯示選項值的獨立bean的name屬性。假如不是與collection屬性共同使用,這個屬性定義了由name屬性指定的bean的屬性名稱(假如有name屬性),或是定義了一個ActionForm bean,這個bean將返回一個集合來寫入選項的值
 

我們看一下這個標記的一些例子:

<html:option collection=”optionCollection” property=”optionValue”

labelProperty=”optionLabel”/>

標記假設在某個作用域中有一個名為optionCollection的集合,它包含了一些具有optionValue屬性的獨立的bean,每個屬性將作為一個選項的值。每個選項的標志由bean的optionLabel屬性屬性進行定義。

<html:option name=”optionValues” labelName=”optionLabels”/>

標記中optionValues代表一個存儲在某個作用域中的bean,它是一個字符串集合,能夠用來寫入選項的值,而optionLabels代表一個存儲在某個作用域中的bean,它也是一個字符串集合,能夠用來寫入選項的標志。

4.3.2 顯示錯誤信息的標記

<html:errors>標記能夠與ActionErrors結合在一起來顯示錯誤信息。這個標記首先要從當前區域的資源文件中讀取消息要害字errors.header,然后顯示消息的文本。接下去它會在ActionErrors對象(通常作為請求參數而存儲在Action.ERROR_KEY要害字下)中循環,讀取單個ActionError對象的消息要害字,從當前區域的資源文件中讀取并格式化相應的消息,并且顯示它們。然后它讀取與errors.footer要害字相對應的消息并且顯示出來。

通過定義property屬性能夠過濾要顯示的消息,這個屬性的值應該與ActionErrors對象中存儲ActionError對象的要害字對應。屬性如下:

屬性
 描述
 
Bundle
 表示應用程序作用域屬性的名稱,它包含著消息資源,其默認值Acion.MESSAGE_KEY
 
Locale
 表示會話作用域屬性的名稱,它存儲著用戶當前登錄的區域信息。其默認值是Action.ERROR_KEY
 
Name
 表示請求屬性的名稱,它存儲著ActionErrors對象。其默認值是Action.ERROR_KEY
 
property
 這個屬性指定了ActionErrors對象中存儲每個獨立ActionError對象的要害字,它可以過濾消息
 

例子:

<html:errors/>

顯示集合中所有的錯誤。

<html:errors property=”missing.name”/>

顯示存儲在missing.name要害字的錯誤。

4.3.3 其他HTML標記

struts HTML標記還定義了下列標記來顯示其他HTML元素:

l         <html:html> : 顯示HTML元素

l         <html:img> : 顯示圖象標記

l         <html:link> : 顯示HTML鏈接或錨點

l         <html:rewrite> : 創建沒有錨點標記的URI

這些標記的具體內容請參照struts文檔。

4.4 模板標記

動態模板是模塊化WEB頁布局設計的強大手段。Struts模板標記庫定義了自定義標記來實現動態模板。

插入標記

<template:insert>標記能夠在應用程序的JSP頁中插入動態模板。這個標記只有一個template屬性,用來定義模板JSP頁。要插入到模板的頁是有多個<template:put>標記來指定的,而這些標記被定義為<template:insert>標記的主體內容。

放置標記

<template:put>標記是<template:insert>標記內部使用的,用來指定插入到模板的資源。屬性如下:

屬性
 描述
 
content
 定義要插入的內容,比如一個JSP文件或一個HTML文件
 
direct
 假如這個設置為true,由content屬性指定的內容將直接顯示在JSP上而不是作為包含文件
 
Name
 要插入的內容的名稱
 
Role
 假如設置了這個屬性,只有在當前合法用戶具有特定角色時才能進行內容的插入。
 

獲得標記

在模板JSP頁中使用<template:get>標記能夠檢索由<template:put>標記插入到JSP頁的資源。屬性如下:

屬性
 描述
 
Name
 由<template:put>標記插入的內容的名稱
 
Role
 假如設置了這個屬性,只有在當前合法用戶具有特定角色時才能進行內容的檢索
 

使用模板標記

首先編寫一個模板JSP頁,它將被所有的web頁使用:

<html>

  <%@ taglib uri=”/template” prefix=”template” %>

  <head>

<title></title>

  </head>

  <body>

<table width=”100%” height=”100%” >

  <tr height=”10%”>

    <td>

      <template:get name=”header”/>

    </td>

  </tr>

  <tr height=”80%”>

    <td>

      <template:get name=”content”/>

    </td>

  </tr>

  <tr height=”10%”>

    <td>

      <template:get name=”footer”/>

    </td>

  </tr>

</table>

  </body>

</html>

我們將這個文件命名為template.jsp。這個文件使用<template:get>標記來獲得由JSP頁使用<template:put>標記提供的內容,并且將內容在一個HTML表格中顯示出來。這三個內容是標題,內容和頁腳。典型的內容JSP會是這樣:

<%@ taglib uri=”/template” prefix=”/template” %>

<template:insert template=”template.jsp”>

  <template:put name=”header” content=”header.html”/>

  <template:put name=”content” content=”employeeList.jsp”/>

  <template:put name=”footer” content=”footer.html”/>

</template:insert>

這個應用程序JSP頁使用<template:insert標記來定義模板,然后使用<template:put>標記將特定內容名稱指定的資源放到模板JSP頁中。假如我們有上百個布局相同的頁,但忽然想改變這個模板,我們只需要改變template.jsp文件。

原文網址
http://www.xtong.com.cn/robornet/software/java/struts/struts2.html

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 石林| 白朗县| 稷山县| 张北县| 安庆市| 尚义县| 嵊州市| 剑阁县| 康乐县| 墨竹工卡县| 佛坪县| 江川县| 噶尔县| 桑日县| 蒙城县| 东兰县| 深泽县| 汕头市| 太谷县| 芦溪县| 渭南市| 秭归县| 崇明县| 遂平县| 日照市| 博兴县| 武山县| 翼城县| 岳西县| 饶河县| 西丰县| 广宗县| 锦州市| 石柱| 桓仁| 康乐县| 樟树市| 天台县| 枣庄市| 永福县| 晋中市|