Struts提供了五個標籤庫,即:HTML、Bean、Logic、Template和Nested。
HTML
標籤: 用來建立可以和Struts 框架和其餘相應的HTML 標籤交互的HTML 輸入表單
Bean 標籤: 在訪問JavaBeans 及其屬性,以及定義一個新的bean 時使用
Logic 標籤: 管理條件產生的輸出和對象集產生的循環
Template 標籤: 隨着Tiles框架包的出現,此標記已開始減小使用
Nested 標籤: 加強對其餘的Struts 標籤的嵌套使用的能力
使用固定屬性名稱的Struts 標籤:
id: 命名自定義標籤建立時的腳本變量名。
name: 指出關鍵字值,在該關鍵字下能夠找到一個存在的bean 。若是給出了scope屬性,則僅僅在scope中查找。不然,根據標準的順序在各類scope中查找:(page, request, session, or application)。
property : 指出bean 中的某個屬性,能夠在其中檢索值。若是沒有標明,則使用對象自己的值。
scope: 定義了Bean在哪一個範圍(page, request, session, or application)中被查找。若是沒有標明按順序查找。腳本變量(見id)將在相同的範圍中建立。
Struts 標籤也支持嵌套引用,例如:
Property="foo.bar.baz"
這至關於進行下面的調用:
getFoo().getBar().getBaz();
或者作爲setter:
getFoo().getBar().setBaz(value);
雖然Struts 標籤的設計原意是爲了不使用scriptlet,scriptlet的表達式還可以提供給全部的Struts 標籤使用。但請確保使用完整的表達式:
錯誤:
- <html:link href="'<%= "/" + name %>/index.jsp>'>
正確:
- <html:link href="'<%= "/" + name + "/index.jsp" %>'> // 表達式必須提供整個屬性值
Html 標籤庫
<html>標籤
它有兩個屬性:locale和xhtml,二者都不是必需的。
- <html:html locale=\"true\">
此行代碼解析後:
說明:生成的結果取決於Struts應用程序所位於的服務器的locale。若是你將應用程序部署到一個不一樣locale的服務器,你不須要改變代碼,Locale會自動調整。
<base>標籤:表示所包含頁面的絕對位置。這個標籤只有內嵌在head標籤中才有效
此行代碼解析後:
- <base href=\"http://www.mymain.com/myStrutsApp/testing.jsp\">
<img>標籤
最重要的屬性page:圖象文件的路徑,前面必須帶有一個斜線。
其它屬性:height、width、alt。
- <html:img page=\"/logo.gif\" height=\"50\" width=\"200\" alt=\"Web Logo\"/>
<link>標籤
- <html:link page=\"/index.html\">Click demo</html:link>
此行代碼解析後:
- <a href=\"/index.html\">Click demo</a>
<errors>標籤:經過一個簡單的<html:errors/>標籤,你就能夠在一個JSP頁面上顯示徹底自定義的錯誤信息。功能超強大!!
說明:這個標籤在Request對象的屬性集合中查找reserved key。若是它找到一個reserved key,它就假設這個key是一個String、或是一個String數組
(它包含在模塊的MessageResources中查找的message keys)、或是類型爲org.apache.struts.action.ActionErrors的一個對象。
若是在應用程序資源中存在相應的信息,那麼就能夠用下面這些可選的message keys:
· errors.header or errors.prefix:相應的信息在錯誤信息的單獨列表前顯示。
· errors.footer or errors.suffix:相應的信息在錯誤信息的單獨列表後顯示。
<form>標籤系列
使用<form>標籤時必須遵循一些規則
標籤中必須包含一個action屬性,它是這個標籤中惟一必需的屬性。若是不具有該屬性則JSP頁面會拋出一個異常。以後你必須給這個action屬性指定一個有效值。一個有效值是指應用程序的Struts配置文件中元素裏的任何一個子元素的訪問路徑。並且相應的元素中必須有一個name屬性,它的值是form bean的名稱。
- <html:form action=\"/login\" >
若是你有上述一個標籤 ,那麼你的Struts配置文件的元素中必須有一個以下顯示爲粗體的元素:
- <action-mappings>
- <action path=\"/login\"
- type=\"com.javapro.struts.LoginAction\"
- name=\"loginForm\"
- scope=\"request\"
- input=\"/login.jsp\">
- <forward name=\"success\" path=\"/mainMenu.jsp\"/>
- </action>
- .
- .
- .
- </action-mappings> // <span style="font-size: 9pt;">這就是說一個</span><span style="font-size: 9pt;">form</span><span style="font-size: 9pt;">標籤是和</span><span style="font-size: 9pt;">form bean</span><span style="font-size: 9pt;">相關聯的</span>
任何包含在<form>中用來接收用戶輸入的標籤(<text>、<password>、<hidden>、<textarea>、<radio>、<checkbox>、<select>)必須在相關的form bean中有一個指定的屬性值。好比,若是你有一個屬性值被指定爲「username」的<text>標籤,那麼相關的form bean中也必須有一個名爲「username」的屬性。輸入<text>標籤中的值會被用於生成form bean的userName屬性。
<form>標籤還有一些不是必須但頗有用的「次要」屬性。
好比,你能夠用focus屬性來生成JavaScript,它會「定焦」(focus)到該form所包含的一個元素上。使用focus屬性時你須要給它指定元素的名稱。
- <body>
- <html:form action=\"/login\" focus=\"password\">
- User Name: <html:text property=\"userName\"/>
- <br>Password: <html:text property=\"password\"/>
- <br><html:submit/>
- </html:form>
- </body>
代碼解析後:
- <body>
- <form name=\"loginForm\" method=\"post\" action=\"/myStrutsApp/login.do\">
- User Name: <input type=\"text\" name=\"userName\" value=\"\">
- <br>Password: <input type=\"text\" name=\"password\" value=\"\">
- <br><input type=\"submit\" value=\"Submit\">
- </form>
- <script language=\"JavaScript\" type=\"text/javascript\">
- <!--
- if (document.forms[\"loginForm\"].elements[\"password\"].type != \"hidden\")
- document.forms[\"loginForm\"].elements[\"password\"].focus()
- // -->
- </script>
-
- </body>
有沒有看到這個標籤庫是如何創建JavaScript來定焦到password元素上的? 這也是該庫讓人着迷的地方之一。你不用擔憂如何在客戶端進行編程,它會幫你自動生成。
還能夠看到,<form>標籤中method屬性的缺省值是POST。
<text>標籤、<hidden>標籤、<textarea>標籤、<radio>標籤、<checkbox>標籤、<submit>標籤、<reset>標籤:
都有一個property屬性,最後會被轉換成HTML中的name屬性,固然還有name和value屬性。
<password>標籤
- <html:password property=\"password\" redisplay=\"false\"/>
該標籤中的一個很重要的屬性是"redisplay",它用於從新顯示之前輸入到這個區域中的值。該屬性的缺省值爲true。然而,爲了使password不能被從新顯示,你或許但願將該屬性的值設爲false。
<select>標籤和<option>標籤:
- <html:select property=\"color\" size=\"3\">
- <html:option value=\"r\">red</html:option>
- <html:option value= \"g\">green</html:option>
- <html:option value= \"b\">blue</html:option>
- </html:select>