Struts 1.x | Struts 2.0 | |
分類 | 將標(biāo)志庫按功能分成HTML、Tiles、Logic和Bean等幾部分 | 嚴(yán)格上來說,沒有分類,所有標(biāo)志都在URI為“/struts-tags”命名空間下,不過,我們可以從功能上將其分為兩大類:非UI標(biāo)志和UI標(biāo)志 |
表達(dá)式語言(expression languages) | 不支持嵌入語言(EL) | OGNL、JSTL、Groovy和Velcity |
![]() |
要在JSP中使用Struts 2.0標(biāo)志,先要指明標(biāo)志的引入。通過在JSP的代碼的頂部加入以下代碼可以做到這點。 <%@taglib prefix="s" uri="/struts-tags" %> |
- if、elseif和else
名稱 必需 默認(rèn) 類型 描述 備注 test 是 Boolean 決定標(biāo)志里內(nèi)容是否顯示的表達(dá)式 else標(biāo)志沒有這個參數(shù) id 否 Object/String 用來標(biāo)識元素的id。在UI和表單中為HTML的id屬性 <%@ page contentType="text/html; charset=UTF-8" %>例1 condition.jsp
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Condition Flow</title>
</head>
<body>
<h3>Condition Flow</h3>
<!--
這里有點小技巧:
本來可以用#parameters.name[0]來獲得,請求中name的值。但是,在我實現(xiàn)include例子時,
無論我用param標(biāo)志給name賦任何值,#parameters里面不會含有任何值,所以#parameters.name也為空值。
其原因為:
當(dāng)使用include標(biāo)志時,被包含的頁面(included)里#parameters拿到的是包含頁面里的請求參數(shù)。
因此,這里必須手工調(diào)用request.getParameter("name")。
-->
<s:set name="name" value="<%= "'" + request.getParameter("name") + "'" %>" />
<s:if test="#name == 'Max'">
Max's file here
</s:if>
<s:elseif test="#name == 'Scott'">
Scott's file here
</s:elseif>
<s:else>
Other's file here
</s:else>
</body>
</html> - iterator
描述:
用于遍歷集合(java.util.Collection)或枚舉值(java.util.Iterator)。名稱 必需 默認(rèn) 類型 描述 status 否 String 如果設(shè)置此參數(shù),一個IteratorStatus的實例將會壓入每個遍歷的堆棧 value 否 Object/String 要遍歷的可枚舉的(iteratable)數(shù)據(jù)源,或者將放入新列表(List)的對象 id 否 Object/String 用來標(biāo)識元素的id。在UI和表單中為HTML的id屬性 <%@ page contentType="text/html; charset=UTF-8" %>例2 iterator.jsp
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%
List list = new ArrayList();
list.add("Max");
list.add("Scott");
list.add("Jeffry");
list.add("Joe");
list.add("Kelvin");
request.setAttribute("names", list);
%>
<html>
<head>
<title>Iterator</title>
</head>
<body>
<h3>Names: </h3>
<!--
1、此處的空property元素用于獲得當(dāng)前iterator的值
2、 status被設(shè)成stuts,在iterator的里面就可以通過#stuts取得IteratorStatus的對象。IteratorStatus 類包含當(dāng)前序號信息,如是否第一個或最后一個,是否為奇數(shù)序號。這些信息在我們做格式化的時候,顯得非常有用。
-->
<ol>
<s:iterator value="#request.names" status="stuts">
<s:if test="#stuts.odd == true">
<li>White <s:property /></li>
</s:if>
<s:else>
<li style="background-color:gray"><s:property /></li>
</s:else>
</s:iterator>
</ol>
</body>
</html> - i18n
描述:
加載資源包到值堆棧。它可以允許text標(biāo)志訪問任何資源包的信息,而不只當(dāng)前action相關(guān)聯(lián)的資源包。名稱 必需 默認(rèn) 類型 描述 value 是 Object/String 資源包的類路徑(如com.xxxx.resources.AppMsg) id 否 Object/String 用來標(biāo)識元素的id。在UI和表單中為HTML的id屬性
<%@ page contentType="text/html; charset=UTF-8" %>例3 i18n.jsp
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Internationization</title>
</head>
<body>
<h3>
<s:i18n name="ApplicationMessages">
<s:text name="HelloWorld" />
</s:i18n>
</h3>
</body>
</html> - include
描述:
包含一個servlet的輸出(servlet或jsp的頁面)。名稱 必需 默認(rèn) 類型 描述 value 是 String 要包含的jsp或servlet id 否 Object/String 用來標(biāo)識元素的id。在UI和表單中為HTML的id屬性 <%@ page contentType="text/html; charset=UTF-8" %>例4 include.jsp
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Iterator</title>
</head>
<body>
<h3>Interator Page</h3>
<s:include value="/condition.jsp">
<s:param name="name">Max</s:param>
</s:include>
<h3>i18n</h3>
<s:include value="/i18n.jsp" />
</body>
</html> - param
名稱 必需 默認(rèn) 類型 描述 name 否 String 參數(shù)名 value 否 String value表達(dá)式 id 否 Object/String 用來標(biāo)識元素的id。在UI和表單中為HTML的id屬性 - set
名稱 必需 默認(rèn) 類型 描述 name 是 String 變量名字 scope 否 String 變量作用域,可以為application, session, request, page, 或action. value 否 Object/String 將會賦給變量的值 id 否 Object/String 用來標(biāo)識元素的id。在UI和表單中為HTML的id屬性 - text
- url
描述:
該標(biāo)簽用于創(chuàng)建url,可以通過"param"標(biāo)簽提供request參數(shù)。當(dāng)includeParams的值時'all'或者'get', param標(biāo)簽中定義的參數(shù)將有優(yōu)先權(quán),也就是說其會覆蓋其他同名參數(shù)的值。 <%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>URL</title>
</head>
<body>
<h3>URL</h3>
<a href='<s:url value="/i18n.jsp" />'>i18n</a><br />
<s:url id="url" value="/condition.jsp">
<s:param name="name">Max</s:param>
</s:url>