struts2標籤的使用

一 數據標籤

1. property標籤

property標籤用來顯示屬性的值
所包含的屬性:

屬性 是否必須 默認值 類型 描述
value ValueStack最頂端的值 Object 被顯示的值
default null String value值爲空時顯示的值
escape ture Boolean 是否轉義HTML

 

 

 

 

 

 

使用示例:
<s:property value="user.username" />
如果不指明value,即:<s:property /> 則值默認值爲VlueStack棧頂的值。

這裏如果加上default屬性:

<s:property value="user.username" default="用戶名" />

則當user.username的值爲空時,將顯示"用戶名"這三個字。

2. set標籤

set標籤用於給一個屬性取別名

屬性 是否必須 類型 描述
name String 被設置在指定作用域的變量的引用名
scope String application、session、request、page或者action,默認值爲action
value Object 設置值得表達式,即name引用名的值

 

 

 

 

 

使用示例
<s:set name="username" value="user.username" />
<s:property value="#username" />
這裏我們將user.username 的值賦給了新建的引用變量username,之後我們就可以直接使用這個變量來獲得user.username的值了

3. push標籤

與set標籤不同的是,push標籤把值放入ValueStack中,以便我們對屬性的訪問。

屬性 是否必須 類型 描述
value Object 放到ValueStack中的值

 

 

 

使用示例:
假設我們有一個User.java類:

public class User{
	private String name;
	private String password;
	public void setName(String name){
		this.name = name;
	}
	public String getName(){
		return name;
	}
	public void setPassword(String password){
		this.password = password;
	}
	public String getPassword(){
		return password;
	}
}

Action類:

public class TestAction extends ActionSupport{
	private User user;
	public String execute (){
		return "success";
	}
	public void setUser(User user){
		this.user = user;
	}
	public User getUser(){
		return user;
	}
}

在jsp頁面中我們可以這樣調用User的屬性:

<s:property value="user.name" />
<s:property value="user.password" />

但是當User中的屬性很多時,我們會發現每次都得使用user.的方式來調用,我們會覺得很煩,
這裏push標籤就發揮作用了:

<s:push value="user">
    <s:peoperty value="name" />
    <s:property value="password" />
</s:push>

這樣使用的效果與上面的方式是一致的。
這裏需要注意的是,user對象是已經存在ValueStack中的了。

4. bean標籤

bean標籤像是set標籤和push標籤的混合。主要不同的是bean標籤不需要使用一個已經存在的對象。你可以創建一個對象的實例把它放到ValueStack中或者設置爲ActionContext的頂級引用。默認情況下,對象會被放在ValueStack中。如果想在標籤的作用域之外引用創建的對象,可以使用var屬性爲對象創建一個引用名,那麼這個引用名會作爲命名參數存在於ActionContext中,在請求週期內可以使用#操作符訪問這個對象。

屬性 是否必須 類型 描述
name String 被創建bean的包名和類名
var String 在結束標籤作用域之外引用這個bean時使用的變量名

 

 

 

 

使用示例:

假設User.java在com.user包中,內容與上面的一致,
則在jsp頁面我們可以這樣使用:

<s:bean name="com.user.User" var="user">
	<s:param name="name">張三</s:param>
	<s:param name="password">123456</s:param>
</s:bean>
<s:property value="#user.id"/>
<s:property value="#user.password"/>

這裏需要注意的是,user對象是放在ActionContext中的,所以我們需要使用#來訪問它。
 

5. action標籤

該標籤允許我們從當前的視圖調用其他的動作。

屬性 是否必須 類型 描述
name String 動作名
namespace String 動作的命名空間,默認使用當前頁面的命名空間
var String 在後續代碼中使用的動作對象的引用名
executeResult Boolean 設爲true時將動作的結果顯示在當前頁面,默認爲false
flush Boolean 設爲true時在action標籤的結尾會刷新寫出緩衝區,默認值爲true
ignoreContextParams Boolean 設置爲true時不包含請求參數,默認爲false

使用示例:

index.jsp:

<s:action name="target" namespace="/tagsTest" executeResult="true" />

在struts.xml中有如下配置:

<package name="default" namespace="/tagsTest" extends="struts-default">
	<action name="target" class="com.action.TestAction">
		<result name="success">/success.jsp</result>
	</action>
</package>

上面使用的結果會將success.jsp的頁面在index.jsp中顯示。

二 控制標籤

1. iterator 標籤

iterator標籤可以遍歷Collection、Map、Enumeration、Iterator或者數組。

屬性 是否必須 類型 描述
value String 被遍歷的對象
status String 如果指定,IteratorStatus對象會使用這個屬性指定的名字,且該名字被放在ActionContext中

使用示例:

<s:iterator value="users" status="s">
	<s:property value="#s.count" />
	<s:property value="name" />
	<s:property value="password" />
</s:iterator>

其中users爲要遍歷的數字或其他的什麼集合,集合類型爲User,定義與上面定義的User.java一致。
這裏status屬性定義的s放在ActionContext中,所以訪問的時候需要加上#.
額外說明:
如果定義了status屬性,那麼會在ActionContext中提供一個IteratorStatus對象,這個對象可以提供諸如集合大小、
當前索引等信息。可以通過status屬性指定的名字來訪問IteratorStatus對象。下面爲IteratorStatus對象可以獲得的信息:

方法名 返回值
getCount int
getIndex int
isEvent Boolean
isFirst Boolean
isLast Boolean
idOdd Boolean
modulus(int operand) int

上面的示例中我們使用#s.count來獲得了當前遍歷的是集合中的第幾個。

2. if和else標籤

屬性 是否必須 類型 描述
test Boolean 被求值和測試的布爾表達式

使用示例:

<s:if test="user.age > 35">The user is too old.</s:if>
<s:elseif test="user.age < 18">The user is too young</s:elseif>
<s:else>This user is just right</else>

三 其他標籤

1. include標籤

include標籤與前面講的action標籤不同的是:
include標籤可以引用任何的Servlet資源,而action標籤只能包含當前Struts 2應用程序中的Struts 2動作。這個包含的動作必須完全在Struts2框架中。include標籤可以跳出Struts 2框架引用任何部署Struts 2應用程序的Web應用程序可以訪問的資源。

屬性 是否必須 類型 描述
value String 頁面、動作、Servlet以及其他可以被引用的URL的名字

使用示例:

<s:include value="success.jsp" />

2. URL標籤

屬性 是否必須 類型 描述
value String 該URL的值
action String 生成URL指向的動作名,是用聲明性框架中配置的動作名(不需要.action擴展名)
var String 如果指定,這個URL不會被寫出,而會存儲在ActionContext留後面使用
includeParams String 從all、get、none中選擇參數,默認值爲get
includeContent Boolean 如果爲true,那麼生成的URL會使用應用程序的Context作爲前綴,默認值爲true
encode Boolean 如果用戶瀏覽器不支持Cookie,會將Session ID追加在生成的URL中
scheme String 指定協議,默認使用當前的協議(HTTP或者HTTPS)

使用示例1:

<s:url value="/helloworld/hello.action" />
<a href='<s:url value="/helloworld/hello.action" />'>Click Me</a>

以上會輸出:
/HelloWorld/helloworld/hello.action
Click Me

注:HelloWorld爲項目的名稱
    Click Me 是超鏈接,連接到該url指定的路徑

使用示例2:

<a:url action="hello" namespace="helloworld" var="myUrl" />
<a:href='<s:property value="#myUrl" />'>Click Me</a>

輸出:
Click Me

注:Click Me 爲超鏈接,點擊該超鏈接與上面的結果一致。

 

參考資料:Struts 2 In Action

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章