JSP Struts之HTML標簽庫詳解
Struts提供了五個標簽庫,即:HTML、Bean、Logic、Template和Nested。
標簽庫 |
說明 |
HTML 標簽 |
用來創建能夠和Struts 框架和其他相應的HTML 標簽交互的HTML 輸入表單 |
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" |
雖然Struts 標簽的設計原意是為了避免使用scriptlet,scriptlet的表達式還能夠提供給所有的Struts 標簽使用。但請確保使用完整的表達式:
錯誤: |
Html 標簽庫
<!--[if !supportLists]-->1. <!--[endif]--><html>標簽
它有兩個屬性:locale和xhtml,兩者都不是必需的。
<html:html locale=\"true\"> |
<!--[if !supportLists]-->2. <!--[endif]-->說明:生成的結果取決于Struts應用程序所位于的服務器的locale。如果你將應用程序部署到一個不同locale的服務器,你不需要改變代碼,Locale會自動調整。
<!--[if !supportLists]-->3. <!--[endif]--><base>標簽:表示所包含頁面的絕對位置。這個標簽只有內嵌在head標簽中才有效。
<html:base/> |
<!--[if !supportLists]-->4. <!--[endif]--><img>標簽
最重要的屬性page:圖象文件的路徑,前面必須帶有一個斜線。
其它屬性:heignt、width、alt。
<html:img page=\"/logo.gif\" height=\"50\" width=\"200\" alt=\"Web Logo\"/> |
<!--[if !supportLists]-->5. <!--[endif]--><link>標簽
<html:link page=\"/index.html\">Click demo</html:link> |
<!--[if !supportLists]-->6. <!--[endif]--><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:相應的信息在錯誤信息的單獨列表后顯示。
<!--[if !supportLists]-->7. <!--[endif]--><form>標簽系列
使用<form>標簽時必須遵循一些規則:
<html:form action=\"/login\" > |
<!--[if !supportLists]-->2. <!--[endif]--><!--[if !supportEmptyParas]--> <!--[endif]-->
<!--[if !supportLists]-->3. <!--[endif]-->任何包含在<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> |
有沒有看到這個標簽庫是如何建立JavaScript來定焦到password元素上的? 這也是該庫讓人著迷的地方之一。你不用擔心如何在客戶端進行編程,它會幫你自動生成。
還可以看到,<form>標簽中method屬性的缺省值是POST。