Portlet Configuration
XWork配置
你的應(yīng)用程序的基本包(base package)應(yīng)該擴(kuò)展自 webwork-portlet-default 包, 例如:
<include file="webwork-default.xml" /> <package name="view" extends="webwork-portlet-default" namespace="/view">
Portlet初始化參數(shù)
下面是在 portlet.xml 中為portlet配置portlet模式(mode) -> xwork命名空間(namespace)影射的 init-param 元素. 簡單的講, 你可以把portlet模式理解為不同的子應(yīng)用程序, 這樣它可以為不同的portlet和portlet模式在 xowrk.xml 中配置不同的命名空間(namespace):
Key | 描述 | 默認(rèn)值 |
---|---|---|
portletNamespace | 這個portlet在xwork配置中的命名空間(namespace). 命名空間(namespace)將在查找action時被優(yōu)先考慮, 從而允許在同一個portlet應(yīng)用程序中建立(host)多個portlet. 如果設(shè)定了這個參數(shù), 完整的命名空間(namespace)將會是 /portletNamespace/modeNamespace/actionName | 默認(rèn)命名空間. |
viewNamespace | xwork配置中視圖portlet模式(view portlet mode)的命名空間(namespace). | The default namespace. |
editNamespace | xwork配置中編輯portlet模式(edit portlet mode)的命名空間(namespace). The namespace in the xwork config for the edit portlet mode. | 默認(rèn)命名空間. |
helpNamespace | xwork配置中幫助portlet模式(help portlet mode)的命名空間(namespace). | 默認(rèn)命名空間. |
defaultViewAction | 在沒有指定action名稱時, 視圖portlet模式(view portlet mode)使用的默認(rèn)action名稱. | 默認(rèn)值 |
defaultEditAction | 在沒有指定action名稱時, 編輯portlet模式(edit portlet mode)使用的默認(rèn)action名稱. | 默認(rèn)值 |
defaultHelpAction | 在沒有指定action名稱時, 幫助portlet模式(help portlet mode)使用的默認(rèn)action名稱. | 默認(rèn)值 |
例子
<init-param> <!-- Portlet 命名空間 --> <name>portletNamespace</name> <value>/portletA</value> </init-param> <init-param> <!-- view portlet 的基本命名空間 --> <name>viewNamespace</name> <value>/view</value> </init-param> <init-param> <!-- 在view portlet 模式下調(diào)用的默認(rèn)action名稱 --> <name>defaultViewAction</name> <value>index</value> </init-param>
這個 portlet.xml 的片斷將會建立一個命名空間為 /portletA/ 的portlet. 這意味著所有對該portlet的請求將優(yōu)先在此命名空間中尋找action. 進(jìn)一步說, _視圖(view) portlet 模式將會影射到 /view 命名空間, 這樣一個對叫 myAction 的action的請求將會被轉(zhuǎn)發(fā)到一個 /portletA/view/myAction 命名空間下的action上. 這也意味著如果沒有請求一個action, 那么對這個請求將會調(diào)用默認(rèn)的action index.
Portlet 階段(phases)
Portlet規(guī)范描述一個portlet請求周期將持續(xù)為兩個階段, event(活動) 階段 和 render(渲染) 階段. 假設(shè)這個portlet中有 event(活動) 階段, 那么它將肯定先于 render(渲染) 階段執(zhí)行. Event(活動) 階段一般用來改變應(yīng)用程序的狀態(tài). 在一個portlet中, 典型情況是在form提交的時候. Render(渲染) 階段將會準(zhǔn)備和分派到視圖(view). 推薦你將一個在 event(活動) 階段執(zhí)行的action的結(jié)果(result)指向到另外一個在 render(渲染) 階段執(zhí)行的action上, 后者用來負(fù)責(zé)派發(fā)到真正的視圖.
Portlet 結(jié)果派發(fā)(result dispatching)
webwork-portlet-default 包定義了一個特殊的默認(rèn)結(jié)果類型(result type), 它負(fù)責(zé)執(zhí)行一個Action執(zhí)行的結(jié)果邏輯(result logic). 一般, 這包括include一個jsp進(jìn)行渲染, 或者為當(dāng)前的活動 action準(zhǔn)備一個渲染 action.
這個結(jié)果類型有三種主要執(zhí)行模式.
- 如果這個Action在渲染階段執(zhí)行, 它會對配置在 location 屬性下的資源執(zhí)行 PortletRequestDispatcher.include(req, res) 方法.
- 如果這個Action在活動階段執(zhí)行, 并且結(jié)果是一個action影射(action mapping), 它會給ActionResponse設(shè)置一個渲染參數(shù)指定哪個Action將會在接下來的渲染階段執(zhí)行. 這符合良好的web應(yīng)用程序設(shè)計(jì), 著提促進(jìn)了活動后重定向(redirect)的使用, 這樣意味著一個在活動階段執(zhí)行的Action將會緊接著被重定向到一個在渲染階段執(zhí)行的Action.
- 如果這個Action在活動階段被執(zhí)行, 并且結(jié)果不是一個action影射(action mapping), 結(jié)果將會作為一種特殊的Action準(zhǔn)備, 它被叫做 "renderDirect(直接渲染)" (在 webwork-portlet-default 包中指定), 它的唯一職責(zé)就是渲染特定的web資源 (一般是一個JSP).
在活動模式執(zhí)行的action可以通過result配置中的query string給渲染模式執(zhí)行的action傳遞渲染參數(shù):
<result name="success">/displayCart.action?userId=${userId}</result>
這會將一個叫做 userId 的 渲染參數(shù) 值傳遞給將要派發(fā)到的action的 userId 屬性.
posted on 2007-04-13 10:02 朱巖 閱讀(449) 評論(0) 編輯 收藏 所屬分類: webwork文章
renderDirect(直接著色,直接生成),實(shí)際上是把結(jié)果放到特定的WEB資源中..