This page last changed on Oct 04, 2004 by kousuke.

4.1: 利用JSP作为视图

在使用JSP绘制视图时, 你可以选择使用脚本(Scriplet)或标签访问活动(action)的数据. 标签是推荐使用的方式.

使用脚本访问活动数据

活动数据可以通过对象值栈(Value Stack)进行访问. 先面的例子完成了与第三课第二个例子(Supplying Data to the Action)中的结果页面相同的工作, 但使用了脚本:
<%@ page import="com.opensymphony.xwork.util.OgnlValueStack" %>
<html>
<head>
<title>WebWork Tutorial - Lesson 4.1 - Lesson 3's example modified</title>
</head>
<body>

<%
OgnlValueStack stack = (OgnlValueStack)request.getAttribute("webwork.valueStack");
out.write("Hello, " + stack.findValue("person"));
%>

</body>
</html>

无论如何, 推荐使用WebWork标签而不是脚本. 例如, <ww:property />标签准确的完成了上面脚本的工作, 同时具有更清晰的语法并处理了当值栈不存在的情况.

WebWork标签库:

我们已经在第三课的例子中展示了如何使用标签访问活动的属性. 本节介绍并举例说明WebWork标签库的用途, 它分为七大类:

  • 通用标签: 最常用, 最基本的标签;
  • 组件化标签: 鼓励视图的组件化;
  • 流程控制标签: 在JSP页面中管理控制流程;
  • 迭代标签: 迭代元素并操作可迭代(iterable)的对象;
  • UI标签: 生成HTML表单字段和控件;
  • VUI标签: 需要自愿者来编写这部分;
  • 国际化支持标签: 提供国际化视图支持.

通用标签

<ww:property />获取结果的属性值. 如果值未指定, 将返回栈顶值.
<ww:push />将一个值压入值栈.
<ww:param />设置父标签的参数. 仅用于其他标签内部, 用于设置父标签某些属性的值.
<ww:set />将值栈中的某个对象的值设置到一个scope(page, stack, application, session)中. 如果值未给定, 将使用栈顶值. 如果scope未给定, 使用"webwork"的缺省scope.
<ww:url />构建一个编码的URL.
此处需要实例.

进一步阅读: 非UI类标签

组件化标签

<ww:action />在标签库的上下文环境中执行一个活动. 标签的主体用来显示活动执行的结果.
<ww:bean />创建一个JavaBean, 初始化它的属性并放入ActionContext以便后续使用.
<ww:include />包含另一个页面或活动.
此处需要实例.

进一步阅读: 非UI类标签

流程控制标签

这个if-else的标签集合就像if-else脚本一样.
<ww:if />有条件执行路径. 换言之, 如果布尔条件是true的话, 就运算标签主体内容.
<ww:else />if标签的反向执行路径. 换言之, 如果前一个if标签的布尔条件是false的话, 就运算标签主体内容.
<ww:elseif />if标签的反向执行路径. 换言之, 如果前一个if标签的布尔条件是false且本标签的布尔条件是true的话, 就运算标签主体内容.
此处需要实例.

进一步阅读: 非UI类标签

迭代标签

<ww:iterator />在一个集合(collection)上迭代.
<ww:generator />生成迭代器(Iterator).
<ww:append />添加几个迭代器.
<ww:subset />获取一个迭代器的子集.
<ww:merge />合并几个迭代器.
<ww:sort />对迭代器进行排序.
此处需要实例.

进一步阅读: 非UI类标签

UI标签

UI标签包装了HTML控件以便与核心框架紧密集成. 这些标签设计目标是最小化代码中的逻辑部分, 并用一个模版系统代理最终的HTML绘制. UI标签试图覆盖最普遍的情景(scenario), 并提供了一个component标签以创建定制组件. UI标签还内建支持显示内嵌的[inline, 参考C++ 中的inline定义]错误信息.

对UI标签的一些细节内容的描述如它们如何工作, 如何利用模版定制它们的外观, 如何创建定制组件等等, 将在另一课中介绍.

跳转到WebWork的UI标签教程.

VUI(Voice UI)标签

<ww:audio />???
<ww:prompt />???
<ww:filled />???
<ww:log />???

需要自愿者编写这一部分.

国际化标签

<ww:text />输出一个经过国际化处理的字符串.
<ww:i18n />将国际化资源包(resource bundle)放入值栈中, 为text标签使用.

进一步阅读: UI标签


上一课 | 下一课
Document generated by Confluence on Dec 14, 2004 16:36