JAVA流通桥

JAVA启发者

统计

留言簿(3)

AJAX相关网址

Eclipse相关网址

Hibernate

java相关网址

LINUX相关网址

webwork相关网址

友好链接

阅读排行榜

评论排行榜

Portlet Configuration

XWork配置

你的应用程序的基本包(base package)应该扩展自 webwork-portlet-default 包, 例如:

xwork.xml
<include file="webwork-default.xml" />
<package name="view" extends="webwork-portlet-default" namespace="/view">

 

 

Portlet初始化参数

下面是在 portlet.xml 中为portlet配置portlet模式(mode) -> xwork命名空间(namespace)影射的 init-param 元素. 简单的讲, 你可以把portlet模式理解为不同的子应用程序, 这样它可以为不同的portlet和portlet模式在 xowrk.xml 中配置不同的命名空间(namespace):

Key 描述 默认值
portletNamespace 这个portlet在xwork配置中的命名空间(namespace). 命名空间(namespace)将在查找action时被优先考虑, 从而允许在同一个portlet应用程序中建立(host)多个portlet. 如果设定了这个参数, 完整的命名空间(namespace)将会是 /portletNamespace/modeNamespace/actionName 默认命名空间.
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. 默认命名空间.
helpNamespace xwork配置中帮助portlet模式(help portlet mode)的命名空间(namespace). 默认命名空间.
defaultViewAction 在没有指定action名称时, 视图portlet模式(view portlet mode)使用的默认action名称. 默认值
defaultEditAction 在没有指定action名称时, 编辑portlet模式(edit portlet mode)使用的默认action名称. 默认值
defaultHelpAction 在没有指定action名称时, 帮助portlet模式(help portlet mode)使用的默认action名称. 默认值

例子

portlet.xml
<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 模式下调用的默认action名称 -->
<name>defaultViewAction</name>
<value>index</value>
</init-param>

 

 

这个 portlet.xml 的片断将会建立一个命名空间为 /portletA/ 的portlet. 这意味着所有对该portlet的请求将优先在此命名空间中寻找action. 进一步说, _视图(view) portlet 模式将会影射到 /view 命名空间, 这样一个对叫 myAction 的action的请求将会被转发到一个 /portletA/view/myAction 命名空间下的action上. 这也意味着如果没有请求一个action, 那么对这个请求将会调用默认的action index.

Portlet 阶段(phases)

Portlet规范描述一个portlet请求周期将持续为两个阶段, event(活动) 阶段 和 render(渲染) 阶段. 假设这个portlet中有 event(活动) 阶段, 那么它将肯定先于 render(渲染) 阶段执行. Event(活动) 阶段一般用来改变应用程序的状态. 在一个portlet中, 典型情况是在form提交的时候. Render(渲染) 阶段将会准备和分派到视图(view). 推荐你将一个在 event(活动) 阶段执行的action的结果(result)指向到另外一个在 render(渲染) 阶段执行的action上, 后者用来负责派发到真正的视图.

Portlet 结果派发(result dispatching)

webwork-portlet-default 包定义了一个特殊的默认结果类型(result type), 它负责执行一个Action执行的结果逻辑(result logic). 一般, 这包括include一个jsp进行渲染, 或者为当前的活动 action准备一个渲染 action.

这个结果类型有三种主要执行模式.

  • 如果这个Action在渲染阶段执行, 它会对配置在 location 属性下的资源执行 PortletRequestDispatcher.include(req, res) 方法.
  • 如果这个Action在活动阶段执行, 并且结果是一个action影射(action mapping), 它会给ActionResponse设置一个渲染参数指定哪个Action将会在接下来的渲染阶段执行. 这符合良好的web应用程序设计, 着提促进了活动后重定向(redirect)的使用, 这样意味着一个在活动阶段执行的Action将会紧接着被重定向到一个在渲染阶段执行的Action.
  • 如果这个Action在活动阶段被执行, 并且结果不是一个action影射(action mapping), 结果将会作为一种特殊的Action准备, 它被叫做 "renderDirect(直接渲染)" (在 webwork-portlet-default 包中指定), 它的唯一职责就是渲染特定的web资源 (一般是一个JSP).

在活动模式执行的action可以通过result配置中的query string给渲染模式执行的action传递渲染参数:

xwork.xml
<result name="success">/displayCart.action?userId=${userId}</result>

 

 

这会将一个叫做 userId渲染参数 值传递给将要派发到的action的 userId 属性.

renderDirect(直接着色,直接生成),实际上是把结果放到特定的WEB资源中..

posted on 2007-04-13 10:02 朱岩 阅读(434) 评论(0)  编辑  收藏 所属分类: webwork文章


只有注册用户登录后才能发表评论。


网站导航: