隨筆-22  評論-6  文章-17  trackbacks-0

          Struts標記庫


          blueski推薦?[2006-4-11]
          出處:來自網(wǎng)上
          作者:不詳
          ?

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

          • Bean標記:用來在JSP頁中管理bean
          • 邏輯標記:用來在JSP頁中控制流程
          • HTML標記:用來生成HTML標記,在表單中顯示數(shù)據(jù),使用會話ID對URL進行編程
          • 模板標記:使用動態(tài)模板構(gòu)造普通格式的頁

          1.1 Bean標記

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

          • 創(chuàng)建和復(fù)制bean的標記
          • 腳本變量定義標記
          • bean翻譯標記
          • 消息國際化標記

          1.1.1 Bean復(fù)制標記

          可定義新bean,可復(fù)制現(xiàn)有bean,還可從現(xiàn)有bean復(fù)制屬性。

          <bean:define>標記用來:

          • 定義新字符串常數(shù)
          • 將現(xiàn)有的bean復(fù)制到新定義的bean對象
          • 復(fù)制現(xiàn)有bean的屬性來創(chuàng)建新的bean

          <bean:define>標記屬性:

          屬性

          描述

          Id

          新定義的bean腳本變量名稱,必須設(shè)置

          Type

          定義引入腳本變量的類

          Value

          為id屬性定義的腳本變量分配一個新的對象

          Name

          目標bean的名稱。若value屬性沒有設(shè)置,這個屬性就必須設(shè)置

          property

          Name屬性定義的bean的屬性名稱,用來定義新的bean

          Scope

          源bean的作用域。若沒有設(shè)置,搜索范圍是從頁作用域到應(yīng)用程序作用域

          toScope

          目標bean的作用域。若沒有設(shè)置,默認值是頁作用域

          例如:定義一個bean:

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

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

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

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

          1.1.2 定義腳本變量的標記

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

          屬性

          描述

          Id

          腳本變量和要定義的頁作用域?qū)傩缘拿Q

          Name

          cookie/標頭/參數(shù)的名稱

          multiple

          如果這個屬性設(shè)置了任意一個數(shù)值,所有匹配的cookie都會被積累并存儲到一個Cookie[](一個數(shù)組)類型的bean里。若無設(shè)置,指定cookie的第一個值將作為Cookie類型的值

          Value

          如果沒有匹配的cookie或數(shù)值,就返回這個屬性指定的默認值

          例如:

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

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

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

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

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

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

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

          屬性

          描述

          Id

          腳本變量和要定義的頁作用域?qū)傩缘拿Q

          Page

          一個內(nèi)部資源

          forward

          一個ActionForward

          Href

          要包含的資源的完整URL

          例如:

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

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

          <bean:resource>標記將檢索web應(yīng)用中的資源,并引入一個腳本變量和InputStream或字符串類型的頁作用域?qū)傩浴H绻跈z索資源時發(fā)生問題,就會產(chǎn)生一個請求時間異常。屬性如下:

          屬性

          描述

          Id

          腳本變量和要定義的頁作用域?qū)傩缘拿Q

          Name

          資源的相對路徑

          Input

          如果這個屬性不存在,資源的類型就是字符串

          例如:

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

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

          1.1.3 顯示Bean屬性

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

          屬性

          描述

          Name

          要進行屬性顯示的bean的名稱

          property

          要顯示的屬性的名稱。如果這個屬性類有java.beans.PropertyEditor,getAsText()或toString 方法會被調(diào)用

          Scope

          Bean的作用域,若沒有設(shè)置,搜索范圍是從頁到應(yīng)用程序作用域

          Filter

          如果設(shè)置true,屬性中的所有特殊HTML字符都將被轉(zhuǎn)化為相應(yīng)的實體引用

          Ignore

          如果設(shè)置false,當(dāng)發(fā)現(xiàn)屬性時會產(chǎn)生一個請求時間異常,否則返回null

          例如:

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

          filter=”true”/>

          myBean的屬性myProperty將會被顯示,作用域為請求,如果發(fā)現(xiàn)任何HTML特殊字符都將被轉(zhuǎn)化為相應(yīng)的實體引用。

          1.1.4 消息標記和國際化

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

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

          用strtus實現(xiàn)國際化和本地化:

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

          error.validation.location = The entered location is invalid

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

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

          ActionServlet的區(qū)域初始化參數(shù)必須與一個true值一起傳送,這樣ActionServlet就會在用戶會話中的Action.LOCALE_KEY關(guān)鍵字下存儲一個特定用戶計算機的區(qū)域?qū)ο蟆,F(xiàn)在可以運行一個國際化的web站點,它可以根據(jù)用戶計算機上的設(shè)置的區(qū)域自動以相應(yīng)的語言顯示。

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

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

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

          屬性

          描述

          Key

          資源文件中定義消息關(guān)鍵字

          Locale

          用戶會話中存儲的區(qū)域?qū)ο蟮膶傩悦Q。若沒有設(shè)置,默認值是Action.LOCALE_KEY

          Bundle

          在應(yīng)用程序上下文中,存儲資源對象的屬性的名稱。如果沒有設(shè)置這個屬性,默認值是Action.MESSAGE_KEY

          arg0

          第一個替換參數(shù)值

          arg1

          第二個替換參數(shù)值

          arg2

          第三個替換參數(shù)值

          arg3

          第四個替換參數(shù)值

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

          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

          1.2 邏輯標記

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

          • 條件邏輯
          • 重復(fù)
          • 轉(zhuǎn)發(fā)/重定向響應(yīng)

          1.2.1 條件邏輯

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

          • cookie
          • 請求參數(shù)
          • bean或bean的參數(shù)
          • 請求標頭

          以下列出了這一類標記:

          標記

          功能

          <equal>

          如果常數(shù)與被定義的實體相等,返回true

          <notEqual>

          如果常數(shù)與被定義的實體不相等,返回true

          <greaterEqual>

          如果常數(shù)大于等于被定義的實體,返回true

          <lessEqual>

          如果常數(shù)小于等于被定義的實體,返回true

          <lessThan>

          如果常數(shù)小于被定義的實體,返回true

          <greaterThan>

          如果常數(shù)大于被定義的實體,返回true

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

          屬性

          描述

          Value

          要進行比較的常數(shù)值

          Cookie

          要進行比較的HTTP cookie的名稱

          Header

          要進行比較的HTTP請求標頭的名稱

          parameter

          要進行比較的HTTP請求參數(shù)的名稱

          Name

          如果要進行比較的是bean或bean的屬性,則這個屬性代表bean的名稱

          property

          要進行比較的bean屬性的名稱

          Scope

          Bean的作用域,如果沒有指定作用域,則它的搜索范圍是從頁到應(yīng)用程序

          例如:

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

          The entered name is SomeName

          </logic:equal>

          判斷名為”name”的請求參數(shù)的值是否是”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。如果這個屬性能夠轉(zhuǎn)化為數(shù)值,就進行數(shù)值比較,否則就進行字符串比較。

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

          • <logic:present>
          • <logic:notPresent>

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

          屬性

          描述

          Cookie

          由這個屬性指定的cookie將被檢查是否存在

          Header

          由這個屬性指定的請求標頭將被檢查是否存在

          parameter

          由這個屬性指定的請求參數(shù)將被檢查是否存在

          Name

          如果沒有設(shè)置property屬性,那么有這個屬性指定的bean將被檢查是否存在。如果設(shè)置了,那么bean和bean屬性都將被檢查是否存在。

          property

          檢查有name屬性指定的bean中是否存在指定的屬性

          Scope

          如果指定了bean的名稱,這就是bean的作用域。如果沒有指定作用域,搜索的范圍從頁到應(yīng)用程序作用域。

          Role

          檢查當(dāng)前已經(jīng)確認的用戶是否屬于特殊的角色

          User

          檢查當(dāng)前已經(jīng)確認的用戶是否有特定的名稱

          例如:

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

          The bean property bean.prop is present

          </logic:notPresent>

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

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

          • <logic:match>
          • <logic:notMatch>

          這些標記允許JSP引擎在發(fā)現(xiàn)了匹配或是沒有發(fā)現(xiàn)時計算標記主體。屬性如下:

          屬性

          描述

          Cookie

          要進行比較的HTTP cookie的名稱

          Header

          要進行比較的的HTTP標頭?的名稱

          parameter

          要進行比較的的HTTP請求參數(shù)的名稱

          Name

          若要對bean或bean的屬性進行比較,這個屬性是用戶指定bean的名稱

          location

          如果設(shè)置了這個屬性的值,將會在這個指定的位置(索引值)進行匹配

          scope

          如果對bean進行比較,這個屬性指定了bean的作用域。如果沒有設(shè)置這個參數(shù),搜索范圍是從頁到應(yīng)用程序作用域

          property

          要進行比較的bean的屬性名稱

          value

          要進行比較的常數(shù)值

          例如:

          <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”的請求參數(shù)是否是”xyz”的子字符串,但是子字符串必須從”xyz”的索引位置1開始(也就是說子字符串必須是”y”或”yz”)。

          1.2.2 重復(fù)標記

          在邏輯標記庫中定義了<logic:iterate>標記,它能夠根據(jù)特定集合中元素的數(shù)目對標記體的內(nèi)容進行重復(fù)的檢查。集合的類型可以是

          java.util.Iterator,java.util.Collection

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

          • 使用運行時間表達式來返回一個屬性集合的集合
          • 將集合定義為bean,并且使用name屬性指定存儲屬性的名稱。
          • 使用name屬性定義一個bean,并且使用property屬性定義一個返回集合的bean屬性。

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

          屬性

          描述

          collection

          如果沒有設(shè)置name屬性,它就指定了要進行重復(fù)的集合

          Id

          頁作用域bean和腳本變量的名稱,它保存著集合中當(dāng)前元素的句柄

          indexed

          頁作用域JSP bean的名稱,它包含著每次重復(fù)完成后集合的當(dāng)前索引

          Length

          重復(fù)的最大次數(shù)

          Name

          作為集合的bean的名稱,或是一個bean名稱,它由property屬性定義的屬性,是個集合

          Offset

          重復(fù)開始位置的索引

          property

          作為集合的Bean屬性的名稱

          Scope

          如果指定了bean名稱,這個屬性設(shè)置bean的作用域。若沒有設(shè)置,搜索范圍從頁到應(yīng)用程序作用域

          Type

          為當(dāng)前定義的頁作用域bean的類型

          例如:

          <logic:iterate id=”currentInt”

          collection=”<% =myList %>”

          type=”java.lang.Integer”

          offset=”1”

          length=”2”>

          <% =currentint %>

          </logic:iterate>

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

          1.2.3 轉(zhuǎn)發(fā)和重定向標記

          轉(zhuǎn)發(fā)標記

          <logic:forward>標記能夠?qū)㈨憫?yīng)轉(zhuǎn)發(fā)給重定向到特定的全局ActionForward上。ActionForward的類型決定了是使用PageContext轉(zhuǎn)發(fā)響應(yīng),還是使用sendRedirect將響應(yīng)進行重定向。此標記只有一個”name”屬性,用來指定全局ActionForward的名稱,例如:

          <logic:forward name=”myGlobalForward”/>

          重定向標記

          <logic:redirect>標記是一個能夠執(zhí)行HTTP重定向的強大工具。根據(jù)指定的不同屬性,它能夠通過不同的方式實現(xiàn)重定向。它還允許開發(fā)人員指定重定向URL的查詢參數(shù)。屬性如下:

          屬性

          描述

          Forward

          映射了資源相對路徑的ActionForward

          Href

          資源的完整URL

          Page

          資源的相對路徑

          Name

          Map類型的頁名稱,請求,會話或程序?qū)傩缘拿Q,其中包含要附加大哦重定向URL(如果沒有設(shè)置?property屬性)上的“名稱-值”參數(shù)。或是具有Map類型屬性的bean名稱,其中包含相同的信息(沒有設(shè)置property屬性)

          Property

          Map類型的bean屬性的名稱。Bean的名稱由name屬性指定。

          Scope

          如果指定了bean的名稱,這個屬性指定搜索bean的范圍。如果沒有設(shè)置,搜索范圍從頁到應(yīng)用程序作用域

          ParamID

          定義特定查詢參數(shù)的名稱

          ParamName

          字符串類型的bean的名稱,其中包含查詢參數(shù)的值(如果沒有設(shè)置paramProperty屬性);或是一個bean的名稱,它的屬性(在paramProperty屬性中指定)包含了查詢參數(shù)值

          paramProperty

          字符串bean屬性的名稱,其中包含著查詢參數(shù)的值

          ParamScope

          ParamName定義的bean的搜索范圍

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

          1.3 HTML標記

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

          • 顯示表單元素和輸入控件
          • 顯示錯誤信息
          • 顯示其他HTML元素

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

          struts將HTML表單與為表單操作而定義的ActionForm bean緊密聯(lián)系在一起。表單輸入字段的名稱與ActionForm bean里定義的屬性名稱是對應(yīng)的。當(dāng)?shù)谝淮物@示表單時,表單的輸入字段是從ActionForm bean中移植過來的,當(dāng)表單被提交時,請求參數(shù)將移植到ActionForm bean實例。

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

          屬性

          描述

          Onblur

          字段失去了焦點

          Onchange

          字段失去了焦點并且數(shù)值被更改了

          Onclick

          字段被鼠標點擊

          Ondblclick

          字段被鼠標雙擊

          Onfocus

          字段接收到輸入焦點

          Onkeydown

          字段擁有焦點并且有鍵按下

          onkeypress

          字段擁有焦點并且有鍵按下并釋放

          Onkeyup

          字段擁有焦點并且有鍵被釋放

          onmousedown

          鼠標指針指向字段并且點擊

          onmousemove

          鼠標指針指向字段并且在字段內(nèi)移動

          onmouseout

          鼠標指針指向控件,但是指針在元素外圍移動

          onmouseover

          鼠標指針沒有指向字段,但是指針在元素內(nèi)部移動

          Onmouseup

          鼠標指針指向字段,并且釋放了鼠標按鍵

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

          屬性

          描述

          Accesskey

          定義訪問輸入字段的快捷鍵

          Style

          定義輸入字段的樣式

          styleClass

          定義輸入字段的樣式表類

          Tabindex

          輸入字段的tab順序

          表單標記

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

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

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

          屬性

          描述

          Action

          與表單相關(guān)的操作。在配置中,這個操作也用來標識與表單相關(guān)的ActionForm bean

          Enctype

          表單HTTP方法的編碼類型

          Focus

          表單中需要初始化焦點的字段

          Method

          表單使用的HTTP方法

          Name

          與表單相關(guān)的ActionForm bean的名稱。如果沒有設(shè)置這個屬性,bean的名稱將會從配置信息中獲得

          Onreset

          表單復(fù)位時的JavaScript事件句柄

          Onsubmit

          表單提交時的JavaScript事件句柄

          Scope

          搜索ActionForm bean的范圍。如果沒有設(shè)置,將從配置文件中獲取

          Style

          使用的格式

          styleClass

          這個元素的格式表類

          Type

          ActionForm bean的完整名稱。如果沒有設(shè)置,將從配置文件獲得

          例如:

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

          </html:form>

          與表單相關(guān)的操作路徑是validateEmployee,而表單數(shù)據(jù)是通過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,與表單相關(guān)的ActionForm bean的名稱,類型和作用域分別是empForm,com.example.EmployeeForm和request.這些屬性也可以使用<html:form>標記屬性進行顯示的定義。

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

          按鈕和取消標記

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

          屬性

          描述

          Property

          定義在表單被提交時返回到服務(wù)器的請求參數(shù)的名稱

          Value

          按鈕上的標記

          復(fù)位和提交標記

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

          文本和文本區(qū)標記

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

          屬性

          描述

          Property

          定義當(dāng)表單被提交時送回到服務(wù)器的請求參數(shù)的名稱,或用來確定文本元素當(dāng)前值的bean的屬性名稱

          Name

          屬性被查詢的bean的名稱,它決定了文本框和文本區(qū)的值。如果沒有設(shè)置,將使用與這個內(nèi)嵌表單相關(guān)的ActionForm的名稱

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

          屬性

          描述

          Maxlength

          能夠輸入的最大字符數(shù)

          Size

          文本框的大小(字符數(shù))

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

          屬性

          描述

          Rows

          文本區(qū)的行數(shù)

          Cols

          文本區(qū)的列數(shù)

          檢查框和復(fù)選框標記

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

          屬性

          描述

          Name

          Bean的名稱,其屬性會被用來確定檢查是否以選中的狀態(tài)顯示。如果沒有設(shè)置,將使用與這個內(nèi)嵌表單相關(guān)的ActionFrom bean的名稱。

          Property

          檢查框的名稱,也是決定檢查框是否以選中的狀態(tài)顯示的bean屬性名稱。在復(fù)選框的情況下,這個屬性必須是一個數(shù)組。

          Value

          當(dāng)檢查框被選中時返回到服務(wù)器的請求參數(shù)的值

          例如:

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

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

          文件標記

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

          屬性

          描述

          Name

          Bean的名稱,它的屬性將確定文件控件中顯示的內(nèi)容。如果沒設(shè)置,將使用與內(nèi)嵌表單相關(guān)的ActionForm bean的名稱

          property

          這個屬性定義了當(dāng)表單被提交時送回到服務(wù)器的請求參數(shù)的名稱,以及用來確定文件控件中顯示內(nèi)容的bean屬性名稱

          Accept

          服務(wù)器能夠處理的內(nèi)容類型集。它也將對客戶瀏覽器對話框中的可選文件類型進行過濾

          Value

          按鈕上的標記,這個按鈕能夠在本地文件系統(tǒng)中瀏覽文件

          單選鈕標記

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

          屬性

          描述

          Name

          Bean的名稱,其屬性會被用來確定單選鈕是否以選中的狀態(tài)顯示。如果沒有設(shè)置,將使用與這個內(nèi)嵌表單相關(guān)的ActionFrom bean的名稱。

          property

          當(dāng)表單被提交時送回到服務(wù)器的請求參數(shù)的名稱,以及用來確定單選鈕是否以被選中狀態(tài)進行顯示的bean屬性的名稱

          Value

          當(dāng)單選鈕被選中時返回到服務(wù)器的值

          隱藏標記

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

          屬性

          描述

          Name

          Bean的名稱,其屬性會被用來確定隱藏元素的當(dāng)前值。如果沒有設(shè)置,將使用與這個內(nèi)嵌表單相關(guān)的ActionFrom bean的名稱。

          property

          定義了當(dāng)表單被提交時送回到服務(wù)器的請求參數(shù)的名稱,以及用來確定隱藏元素當(dāng)前值的bean屬性的名稱

          Value

          用來初始化隱藏輸入元素的值

          密碼標記

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

          屬性

          描述

          maxlength

          能夠輸入的最大字符數(shù)

          Name

          Bean的名稱,它的屬性將用來確定密碼元素的當(dāng)前值。如果沒有設(shè)置,將使用與這個內(nèi)嵌表單相關(guān)的ActionFrom bean的名稱。

          property

          定義了當(dāng)表單被提交時送回到服務(wù)器的請求參數(shù)的名稱,以及用來確定密碼元素當(dāng)前值的bean屬性的名稱

          redisplay

          在顯示這個字段時,如果相應(yīng)的bean屬性已經(jīng)被設(shè)置了數(shù)據(jù),這個屬性決定了是否顯示密碼的內(nèi)容

          Size

          字段的大小

          選擇標記

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

          屬性

          描述

          multiple

          表明這個選擇控件是否允許進行多選

          Name

          Bean的名稱,它的屬性確定了哪個。如果沒有設(shè)置,將使用與這個內(nèi)嵌表單相關(guān)的ActionFrom bean的名稱。

          property

          定義了當(dāng)表單被提交時送回到服務(wù)器的請求參數(shù)的名稱,以及用來確定哪個選項需要被選中的bean屬性的名稱

          Size

          能夠同時顯示的選項數(shù)目

          Value

          用來表明需要被選中的選項

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

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

          屬性

          描述

          collection

          Bean集合的名稱,這個集合存儲在某個作用域的屬性中。選項的數(shù)目與集合中元素的數(shù)目相同。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”/>

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

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

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

          1.3.2 顯示錯誤信息的標記

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

          通過定義property屬性能夠過濾要顯示的消息,這個屬性的值應(yīng)該與ActionErrors對象中存儲ActionError對象的關(guān)鍵字對應(yīng)。屬性如下:

          屬性

          描述

          Bundle

          表示應(yīng)用程序作用域?qū)傩缘拿Q,它包含著消息資源,其默認值A(chǔ)cion.MESSAGE_KEY

          Locale

          表示會話作用域?qū)傩缘拿Q,它存儲著用戶當(dāng)前登錄的區(qū)域信息。其默認值是Action.ERROR_KEY

          Name

          表示請求屬性的名稱,它存儲著ActionErrors對象。其默認值是Action.ERROR_KEY

          property

          這個屬性指定了ActionErrors對象中存儲每個獨立ActionError對象的關(guān)鍵字,它可以過濾消息

          例子:

          <html:errors/>

          顯示集合中所有的錯誤。

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

          顯示存儲在missing.name關(guān)鍵字的錯誤。

          1.3.3 其他HTML標記

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

          • <html:html> : 顯示HTML元素
          • <html:img> : 顯示圖象標記
          • <html:link> : 顯示HTML鏈接或錨點
          • <html:rewrite> : 創(chuàng)建沒有錨點標記的URI

          這些標記的詳細內(nèi)容請參照struts文檔。

          1.4 模板標記

          動態(tài)模板是模塊化WEB頁布局設(shè)計的強大手段。Struts模板標記庫定義了自定義標記來實現(xiàn)動態(tài)模板。

          插入標記

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

          放置標記

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

          屬性

          描述

          content

          定義要插入的內(nèi)容,比如一個JSP文件或一個HTML文件

          direct

          如果這個設(shè)置為true,由content屬性指定的內(nèi)容將直接顯示在JSP上而不是作為包含文件

          Name

          要插入的內(nèi)容的名稱

          Role

          如果設(shè)置了這個屬性,只有在當(dāng)前合法用戶具有特定角色時才能進行內(nèi)容的插入。

          獲得標記

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

          屬性

          描述

          Name

          由<template:put>標記插入的內(nèi)容的名稱

          Role

          如果設(shè)置了這個屬性,只有在當(dāng)前合法用戶具有特定角色時才能進行內(nèi)容的檢索

          使用模板標記

          首先編寫一個模板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>標記提供的內(nèi)容,并且將內(nèi)容在一個HTML表格中顯示出來。這三個內(nèi)容是標題,內(nèi)容和頁腳。典型的內(nèi)容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>

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

          posted on 2006-05-23 10:08 surffish 閱讀(201) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 寻甸| 东山县| 正蓝旗| 长垣县| 梓潼县| 宁蒗| 铜梁县| 南京市| 台安县| 龙海市| 得荣县| 桃江县| 宁津县| 湘乡市| 龙川县| 南华县| 沁水县| 陵川县| 洪雅县| 汉阴县| 体育| 濮阳市| 扎赉特旗| 高淳县| 昭苏县| 阳山县| 红桥区| 兴文县| 武清区| 长兴县| 德保县| 龙游县| 蒙阴县| 泸水县| 措美县| 平陆县| 资溪县| 云浮市| 舞阳县| 枞阳县| 苍南县|