2009年6月28日 星期日

[Struts2] Miscellaneous Tags

之前已經提到兩種類型的 Tags:Control TagsData Tags。在這裡我們所提到的 Tags 都不屬於前面所提到的兩種類型,所以我特別放在雜項 (miscellaneous) 討論:1) include tag, 2) URL tag 與 3) param tag。

Include Tag
如果你熟悉 JSP 的話,include tag 你應該不陌生,因為在 JSTL 中也有提供類似的 tag:<jsp:include>,不過,Struts2 提供的 include tag 擁有更多更好的功能,也具備了 JSTL 的 include tag 所沒有提供的能力。
之前我們有提過 Action tag,與現在的 include tag 有些許的不同:include tag 可以引用任何的網路 resources,包含其所屬的 web app 或是外部的 resources 等;而 action tag 只能引用自己本身所屬的 web app 中的 actions,對於外部的 actions 則無法引用。
Include tag 只有一個 attribute 可以使用:value,在 value 中我們可以指定 URL、也可以是某個 action 等,如果我們要傳送 parameter 給 include 的頁面,我們可以配合 param tag 使用 (稍後提到):
<s:include value="MyAction.action">
<s:param name="id" value="myID" />
</s:include>

URL Tag
對於 Struts2 framework 來說,轉換 URL 到目標的 action 是主要的工作,因為 URL 是瀏覽器需要解析的,而背後的工 action 對應就由 Struts2 framework 幫我們完成!在 Struts2 中提供了這樣的 URL tag 幫助我們轉換 URL,任何的 resources 我們都可以交由 URL tag 幫我們轉換。
URL 提供的 attributes,我們透過 URL tag 幫我們將 action 轉換成正確可執行的 URL,然後我們在嵌入 <a> 中:
<a href='<s:url action="myAction" />'>My Action</a>

如果我們要傳送 parameter 給目標的 URL,我們可以結合 param tag 並透過 var attribute 幫我們將 URL 暫存起來,最後在透過 property tag 幫我們取出暫存的 URL:
<s:url action="MyAction" var="tmpURL">
<s:param name="id" value="myID"/>
</s:url>
<a href='<s:property value="#tmpURL"/>'>My Action</a>

Param Tag

這個 tag 在之前就已經有稍微看過了,目的在於將 parameter 做傳送的動作,在這個 tag 中只有兩個 attributes:1) name 與 2) value。
我們可以想像就是將 key-value pattern 傳送給某個地方,就像我們在上面就提過的,我們可以和 include tag 或 URL tag 配合,產生更好用的功能!

在這裡我們討論到三個會用到但又不屬於特殊功能的 tags,這三個 tags 都算常用,而且很好用!

沒有留言: