浏览 3624 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-09-27
WebWork提供四类标签: . 数据标签: 从值栈中取数据,将数据设置到值栈; . 控制流标签:改变程序的执行流,以及基于系统的状态产生不同的输出; . UI标签: 主要呈现表单外观; . 杂项标签: 生成URL和输入国际化文本等。 语法:1. 对String类型外的内容依据值栈进行求值; 2. 对String类型内容进行解析:WebWork查找符合%{...}样式的子串,然后对大括号间的表达式进行求值。 在默认情况下,WebWork 2.1.x关没有启用新语法,通过在webwork.properties中新增一行代码实现: webwork.tag.altSyntax = true; 一. 数据标签 1. property 标签:输出OGNL表达式的值; property标签的属性 ------------------------------------------------------------------------------------------------ 属性 数据类型 是否必需 描述 ------------------------------------------------------------------------------------------------ value Object 否 进行求值的表达式,如没设定,将会被设定为top default String 否 如果依据value属性无法得到具体值,则使用default设定的默认值 escape Boolean 否 是否将输出内容进行HTML转义,例设为true, &将转义为& ------------------------------------------------------------------------------------------------ 2. set 标签:对值栈中的表达式进行求值,并将结果赋给特定作用域中的某个变量名。 set标签的属性 ------------------------------------------------------------------------------------------------ 属性 数据类型 是否必需 描述 ------------------------------------------------------------------------------------------------ name String 是 在一个指定的作用域内被赋值的变量名 value Object 是 用于赋值的表达式 scope String 否 可选的值为:application, session,request, page或default(即action context) ------------------------------------------------------------------------------------------------ 举例: <%@page contentType="text/html;charset=UTF-8" %> <%@taglib uri="webwork" prefix="ww" %> Name: <ww:property value="#session['u'].name"/><br> Password: <ww:property value="#session.u.password"/><br> 每次都要重复使用#session['u']不仅烦人,而且容易出错。可以通过set标签定义一个临时变量,令这个变量指向user对象。 <%@page contentType="text/html;charset=UTF-8" %> <%@taglib uri="webwork" prefix="ww" %> <ww:set name="u" value="#session.u"/> Name: <ww:property value="#u.name"/><br> Password: <ww:property value="#u.password"/><br> 3. push 标签:将对象压入值栈后直接对其进行多次操作,而不需要在每个与对象相关的表达式之前加上对象名称。 push标签的属性 ------------------------------------------------------------------------------------------------ 属性 数据类型 是否必需 描述 ------------------------------------------------------------------------------------------------ value Object 是 需要压入值栈的树所对应的表达式 如使用push标签,上个例子代码可进一步简化: <%@page contentType="text/html;charset=UTF-8" %> <%@taglib uri="webwork" prefix="ww" %> <ww:set name="u" value="#session.u"/> <ww:push value="#u"> Name: <ww:property value="name"/><br> Password: <ww:property value="password"/><br> </ww:push> push标签通常和JSP静态包含,实现部分代码重用; 4. bean 标签:创建JavaBean,压入值栈以及赋给某个变量名。 bean标签的属性 ------------------------------------------------------------------------------------------------ 属性 数据类型 是否必需 描述 ------------------------------------------------------------------------------------------------ name String 是 被创建的bean对应的包名和类名 id String 否 如果需在bean标签之外引用bean对象,可通过id属性设置引用名称 <%@page contentType="text/html;charset=UTF-8" %> <%@taglib uri="webwork" prefix="ww" %> <ww:bean name="java.util.Date" id="now"/> <ww:bean name="com.opensymphony.webwork.util.DateFormatter"> <ww:param name="format" value="'MM/dd/yyyy'"/> <ww:param name="date" value="now"/> <ww:property value="formattedDate"/> </ww:bean> 打印输出当前日期。虽然可用DateFormatter打印出格式化的日期,还是推荐使用国际化功能实现格式化的操作。 5. action 标签:执行action并访问相应的数据。 action 标签的属性 ------------------------------------------------------------------------------------------------ 属性 数据类型 是否必需 描述 ------------------------------------------------------------------------------------------------ name String 是 action名 namespace String 否 action的namespace,默认值为当前页面所在的namespace id String 否 引用action bean所需的名称,便于在页面后面的部分引用 executeResult Boolean 否 为true,才执行action对应的result,默认值为false; 使用action标签,可以在页面重用action输出的结果, 举例有一action往页面上输出一树形目录,该目录在多处要被使用, 可以使用以下形式使用: <ww:action name="categoryTree" executeResult="true"/> 其中categoryTree为action在xwork.xml中的配置名称。 二. 控制标签 1. iterator标签:轻松循环遍历任何对象集合,包括Collection, Map, Enumeraton, Iterator及array。同时可在action context 中定义一个变量,用于确定与当前循环状态相关的基本信息。 iterator 标签的属性 ------------------------------------------------------------------------------------------------ 属性 数据类型 是否必需 描述 ------------------------------------------------------------------------------------------------ value Collection,Map,Enumeration 是 被循环遍历的对象 Iterator或者array status String 否 如果设置了该属性,IteratorStatus对象就会被 置于action context中 示例: a. action package ch9; import com.opensymphony.xwork.ActionSupport; import java.util.*; import ch4.User; public class IteratorTagTest extends ActionSupport { private String[] array = {"Monday","Tuesday","Wednesday","Thursday"}; private List<User> list; private Map<Integer, String> map; @Override public String execute() { list = new ArrayList<User>(); for(int i=0;i<10;i++) { User u = new User("user"+i, "resu"+i); list.add(u); } map = new HashMap<Integer, String>(); for(int i=1;i<array.length;i++) { map.put(i, array[i]); } return SUCCESS; } public String[] getArray() { return array; } public void setArray(String[] array) { this.array = array; } public List<User> getList() { return list; } public void setList(List<User> list) { this.list = list; } public Map<Integer, String> getMap() { return map; } public void setMap(Map<Integer, String> map) { this.map = map; } } b. jsp <%@page contentType="text/html;charset=UTF-8" %> <%@taglib uri="webwork" prefix="ww" %> <html> <body> <h3><ww:iterator>遍历数组</h3> <ww:iterator value="array"> <ww:property value="top"/><br> </ww:iterator> <h3><ww:iterator>遍历Collection</h3> <ww:iterator value="list"> <ww:push value="top"> Name: <ww:property value="name"/> Password: <ww:property value="password"/><br> </ww:push> </ww:iterator> <h3><ww:iterator>遍历Map</h3> <ww:iterator value="map"> <ww:property value="key"/>, <ww:property value="value"/><br> </ww:iterator> </body> </html> c. 显示效果: <ww:iterator>遍历数组 Monday Tuesday Wednesday Thursday <ww:iterator>遍历Collection Name: user0 Password: resu0 Name: user1 Password: resu1 Name: user2 Password: resu2 Name: user3 Password: resu3 Name: user4 Password: resu4 Name: user5 Password: resu5 Name: user6 Password: resu6 Name: user7 Password: resu7 Name: user8 Password: resu8 Name: user9 Password: resu9 <ww:iterator>遍历Map 1, Tuesday 2, Wednesday 3, Thursday 另通过status属性,在action context中生成一个IteratorStatus对象。该对象提供诸如集合大小、当前索引,以及当前遍 历到的对象处于列表的单数索引位置还是双数索引位置等信息。如结合if/else标签,可实现奇数行和偶数行使用不同颜色 阴影的表格。 2. if/else标签:实现基本页面执行流及页面呈现。 if/else 标签的属性 ------------------------------------------------------------------------------------------------ 属性 数据类型 是否必需 描述 ------------------------------------------------------------------------------------------------ test Boolean 是 用于求值并返回true或false的布尔表达式 刚才那个JSP我们再行改一下,使对Collection遍历的内容,一行红色,一行黑色相间隔: <h3><ww:iterator>遍历Collection</h3> <ww:iterator value="list" status="status"> <ww:if test="#status.even"> <ww:set name="color" value="'black'"/> </ww:if> <ww:else> <ww:set name="color" value="'red'"/> </ww:else> <font color="<ww:property value="color"/>"> <ww:push value="top"> Name: <ww:property value="name"/> Password: <ww:property value="password"/><br> </ww:push> </font> </ww:iterator> 三. 杂项标签 1. include标签:功能与<jsp:include>类似,但提供了与WebWork更好的集成。 include 标签的属性 ------------------------------------------------------------------------------------------------ 属性 数据类型 是否必需 描述 ------------------------------------------------------------------------------------------------ value String 是 页面名称,action, servlet或任何引用的URL . 更好的WebWork集成:可利用值栈对使用%{...}符号的内容进行求值; . 对用户友好: 不管路径是绝对还是相对,最后均会重写为绝对的URL路径; 2. URL标签:生成相对或绝对路径的URL,处理参数以及对URL进行编码。 URL 标签的属性 ------------------------------------------------------------------------------------------------ 属性 数据类型 是否必需 描述 ------------------------------------------------------------------------------------------------ value String 否 基本的URL。默认值为生成当前页面的URL includeParams String 否 从all,get或none中选择参数,默认值为get id String 否 如果指定了该属性,那么URL将不会输出,而是会保存于 action context, 以作后用 includeContext Boolean 否 如果为true,那么生成的URL前面会加上应用程序所在的上下 文路径。默认值为false; encode Boolean 否 如果访问者没有启用cookie,则在URL中增加session ID. scheme String 否 让你可以指定协议,默认为当前的设置(HTTP或HTTPS) 举例: a. 生成search.action?query=XXX, 其中XXX为表达式求值后的具体数值; <ww:url value="search.action"> <ww:param name="query" value="name"/> </ww:url> b. 包含当前页面的所有查询字符串 includeParams属性设置为get, WebWork包含当前页面的所有查询字符串。 为none, 不包含任何参数。 为all, 所有参数都可以用不着URL的生成,包括通过POST请求提交的参数。 c. 在URL前加上程序所在上下文 只有设定includeContext值为true,且URL为绝对路径情况下才会加上程序所在上下文。 3. text标签:显示特定语言的文本 text 标签的属性 ------------------------------------------------------------------------------------------------ 属性 数据类型 是否必需 描述 ------------------------------------------------------------------------------------------------ name String 是 用于在ResourceBundle中进行查找的键 id String 否 如果设置该属性,文本内容将会存储在action context中, 那么通过属性值的名称可以进行引用 value0 Object 否 参数1(deprecated) value1 Object 否 参数2(deprecated) value2 Object 否 参数3(deprecated) value3 Object 否 参数4(deprecated) 示例: 如searchResults键对应的英文文本如下: We searched {0} items in your database and found {1} matches. 那么可 通过以下内容进行获取内容: <ww:text name="searchResults"> <ww:param value="totalItems"/> <ww:param value="searchCount"/> </ww:text> 那么第一个param的值对应参数{0},第二个param的值对应参数{1}。 4. i18n标签:将某个资源包的内容压入栈中,让你可以在标签内部访问与资源包相关的i18n的资源 i18n 标签的属性 ------------------------------------------------------------------------------------------------ 属性 数据类型 是否必需 描述 ------------------------------------------------------------------------------------------------ name String 是 资源(resource boundle)的名称 示例: <ww:i18n name="org.hibernate.auction.myBundle"> <ww:text name="someKey"/> </ww:i18n> 代码将从myBundle这个资源包中查找someKey对应的文本,而不是默认的资源包。 5. param标签:辅助其他标签,实现参数内容传递; param 标签的属性 ------------------------------------------------------------------------------------------------ 属性 数据类型 是否必需 描述 ------------------------------------------------------------------------------------------------ name String 否 应用于像URL或者action这样的父标签的参数名称 value Object 否 一个OGNL表达式,结果为被应用的值 . 除了text标签外,其他标签使用参数的时侯都依照键/值对的形式; . 使用标签内容的内容进行设置,这种途径并不能为value属性赋值一个OGNL的表达式,只会被作为一个String 的参数值; <ww:text name="searchResults"> <ww:param>over 5 million</ww:param> <ww:param value="searchCount"/> </ww:text> 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-09-27
怎么发帖内容里的html代码均不见了?
|
|
返回顶楼 | |