Data标签用来提供各种数据相关的功能.范围从显示一个action的直接结果,到获取本地化的数值等.
1.action
描述
通过指定命名空间和action名称,该标签允许你在jsp页面直接调用Action. 标签体用来渲染Action执行结果. 除非你设定了executeResult参数为true,否则你在xwork.xml中为该Action指定的Result Processor不会执行.
参数
| 名称 | 必填 | 缺省 | 类型 | 描述 |
|---|---|---|---|---|
| id | false | String | 如果设定,将作为该Action在栈中的标识 | |
| name | true | String | action名字(不包括后缀,如.action) | |
| namespace | false | String | action所在命名空间 | |
| executeResult | false | false | Boolean | Action的result是否需要被执行 |
| ignoreContextParams | false | false | Boolean | request中的参数是否需要传入该Action |
例子
public class ActionTagAction extends ActionSupport {
public String execute() throws Exception {
return "done";
}
public String doDefault() throws Exception {
ServletActionContext.getRequest().setAttribute("stringByAction", "This is a String put in by the action's doDefault()");
return "done";
}
}
<xwork>
....
<action name="actionTagAction1" class="tmjee.testing.ActionTagAction">
<result name="done">success.jsp</result>
</action>
<action name="actionTagAction2" class="tmjee.testing.ActionTagAction" method="default">
<result name="done">success.jsp</result>
</action>
....
</xwork>
<div>The following action tag will execute result and include it in this page</div>
<br />
<ww:action name="actionTagAction" executeResult="true" />
<br />
<div>The following action tag will do the same as above, but invokes method specialMethod in action</div>
<br />
<ww:action name="actionTagAction!specialMethod" executeResult="true" />
<br />
<div>The following action tag will not execute result, but put a String in request scope
under an id "stringByAction" which will be retrieved using property tag</div>
<ww:action name="actionTagAction!default" executeResult="false" />
<ww:property value="#attr.stringByAction" />
2. bean
描述
实例化一个符合JavaBeans规范的class,标签体内可以包含几个Param元素,用于调用setter方法给此class的属性赋值.如果是定了id属性,则该实例将会放到stack的context中.
参数
| 名称 | 必填 | 缺省 | 类型 | 描述 |
|---|---|---|---|---|
| name | true | String | 要被实例化的class名字(必须符合JavaBeans规范) | |
| id | false | String/Object | 标识该元素 |
例子
| 译注 原文中此处Freemarker的例子写法格式可能有误.一般的写法应该为类似: |
<-- in freemarker form -->
[ww.bean name="com.opensymphony.webwork.example.counter.SimpleCounter" id="counter"]
[ww:param name="foo" value="BAR"/]
The value of foo is : [ww:property value="foo"/], when inside the bean tag.<br />
[/ww:bean]
<-- in jsp form -->
<ww:bean name="com.opensymphony.webwork.example.counter.SimpleCounter" id="counter">
<ww:param name="foo" value="BAR" />
The value of foot is : <ww:property value="foo"/>, when inside the bean tag <br />
</ww:bean>
上面的例子初始化了一个叫SimpleCounter的class实例并且给其foo属性赋了值(setFoo('BAR')). 然后该实例被压进Valuestack, 也就是说我们可以通过Property标签调用其getter方法(getFoo())取到相应的值.
上例中, 我们把id设为counter. 导致该实例会被放进stack的context中.你可以通过标签取到该实例
<-- jsp form -->
<ww:property value="#counter" />
<-- freemarker form -->
[ww:property value="#counter.foo"/]
上面property标签的例子中,#告诉Ognl去context中找id为counter的SimpleCounter实例.
3.debug
4.i18n
描述
将某个特定resource bundle放入value stack. 然后通过text标签拿到相应message, 而不是仅限于绑定到当前action的bundle.
参数
| 名称 | 必填 | 缺省 | 类型 | 描述 |
|---|---|---|---|---|
| name | true | String | 要使用的resource bundle.(如 foo/bar/customBundle) | |
| id | false | String/Object | 标识该元素 |
例子
<ww:i18n name="myCustomBundle">
The i18n value for key aaa.bbb.ccc in myCustomBundle is <ww:property value="text('aaa.bbb.ccc')" />
</ww:i18n>
5. include
描述
包含servlet的输出(servlet或JSP页面)
参数
| 名称 | 必填 | 缺省 | 类型 | 描述 |
|---|---|---|---|---|
| value | true | String | 包含的jsp或servlet | |
| id | false | Object/String | 元素标识 |
例子
<-- One: -->
<ww:include value="myJsp.jsp" />
<-- Two: -->
<ww:include value="myJsp.jsp">
<ww:param name="param1" value="value2" />
<ww:param name="param2" value="value2" />
</ww:include>
<-- Three: -->
<ww:include value="myJsp.jsp">
<ww:param name="param1">value1</ww:param>
<ww:param name="param2">value2<ww:param>
</ww:include>
示例1 - 包含一个 myJsp.jsp 页面
示例2 - 包含一个 myJsp.jsp 页面,附带参数 param1=value1 和 param2=value2
示例3 - 包含一个 myJsp.jsp 页面,附带参数 param1=value1 和 param2=value2
6.param
描述
为其他标签提供参数,比如include标签和bean标签.
参数的name属性是可选的,如果提供,会调用Component的方法addParameter(String, Object),如果不提供,则外层嵌套标签必须实现UnnamedParametric接口(如TextTag).
该标签的两个属性
- name (String) - 参数名
- value (Object) - 参数值
注意 : value的提供有两种方式,通过value属性或者标签中间的text,不同之处我们看一下例子:
<param name="color">blue</param> <-- (A) -->
<param name="color" value="blue"/> <-- (B) -->
(A)中,参数值会以String的格式放入statck. (B)中该值会以java.lang.Object的格式放入statck.
具体请看http://jira.opensymphony.com/browse/WW-808
.
参数
| 名称 | 必填 | 缺省 | 类型 | 描述 |
|---|---|---|---|---|
| name | false | String | 参数名 | |
| value | false | 从stack中evaluated的值 | Object/String | value表达式 |
| id | false | Object/String | 引用元素的id |
例子
<pre>
<ui:component>
<ui:param name="key" value="[0]"/>
<ui:param name="value" value="[1]"/>
<ui:param name="context" value="[2]"/>
</ui:component>
</pre>
这里key作为标识符,value在当前的OgnlValueStack上被当作一个OGNL的表达式来求值获得结果.(原文:where the key will be the identifier and the value the result of an OGNL expression run against the current OgnlValueStack.)
7.push
描述
push值到堆栈中,方便应用.
参数
| 名称 | 必填 | 缺省 | 类型 | 描述 |
|---|---|---|---|---|
| value | true | Object/String | 要push到堆栈中的值 | |
| id | false | Object/String | 该元素标识 |
例子
<ww:push value="user">
<ww:propery value="firstName" />
<ww:propery value="lastName" />
</ww:push>
将user的值push到栈中,从而使property标签的能够获取user的属性(firstName, lastName etc)
<ww:push value="myObject"> ----- (1)
<ww:bean name="jp.SomeBean" id="myBean"/> ----- (2)
<ww:param name="myParam" value="top"/> ----- (3)
</ww:bean>
</ww:push>
当在 (1) 时, myObject 在栈顶
当在 (2) 时, jp.SomeBean 在栈顶, 也在stack's context中以myBean为键值存在
当在 (3) 时, top得到jp.SomeBean的实例
<ww:push value="myObject"> ---(A)
<ww:bean name="jp.SomeBean" id="myBean"/> ---(B)
<ww:param name="myParam" value="top.mySomeOtherValue"/> ---(C)
</ww:bean>
</ww:push>
当在 (A) 时, myObject 在栈顶
当在 (B) 时, jp.SomeBean 在栈顶, 也在stack's context中以myBean为键值存在
当在 (C) 时, top指向jp.SomeBean的实例.所以top.mySomeOtherValue调用SomeBean的 mySomeOtherValue() 方法
<ww:push value="myObject"> ---- (i)
<ww:bean name="jp.SomeBean" id="myBean"/> ---- (ii)
<ww:param name="myParam" value="[1].top"/> -----(iii)
</ww:bean>
</ww:push>
当在 (i) 时, myObject 在栈顶
当在 (ii) 时, jp.SomeBean 在栈顶, 后面是myObject
当在 (iii) 时, [1].top返回myObject
8.set
描述
set标签赋予变量一个特定范围内的值. 当希望给一个变量赋一个复杂的表达式,每次访问该变量而不是复杂的表达式时用到.其在两种情况下非常有用: 复杂的表达式很耗时 (性能提升) 或者很难理解 (代码可读性提高).
参数
| 名称 | 必填 | 缺省 | 类型 | 描述 |
|---|---|---|---|---|
| name | true | String | 变量的名字 | |
| scope | false | action | String | 变量作用域,可以为application, session, request, page, 或action. |
| value | false | Object/String | 将会赋给变量的值 | |
| id | false | Object/String | 元素标识 |
例子
<ww:set name="personName" value="person.name"/>
Hello, <ww:property value="#personName"/>. How are you?
9.text
描述
支持国际化信息的标签
国际化信息必须放在一个和当前action同名的resource bundle中,如果没有找到相应message,tag body将被当作默认message,如果没有tag body,message的name会被作为默认message
参数
| 名称 | 必填 | 缺省 | 类型 | 描述 |
|---|---|---|---|---|
| name | true | Object/String | 资源属性的名字 | |
| name | false | Object/String | 该元素标识 |
例子
<!-- First Example -->
<ww:i18n name="webwork.action.test.i18n.Shop">
<ww:text name="main.title"/>
</ww:i18n>
<!-- Second Example -->
<ww:text name="main.title" />
另外一个例子
<ww:text name="format.money"><ww:param name="value" value="myMoneyValue"/></ww:text>
这里
format.money={0,number,currency}
了解格式化文本的各种情况的文档,请浏览
- http://java.sun.com/j2se/1.4.2/docs/api/java/text/MessageFormat.html
- http://java.sun.com/docs/books/tutorial/i18n/format/decimalFormat.html
10.url
描述
该标签用于创建url,可以通过"param"标签提供request参数.
注意:
当includeParams的值时'all'或者'get', param标签中定义的参数将有优先权,也就是说其会覆盖其他同名参数的值.
参数
| 名称 | 必填 | 缺省 | 类型 | 描述 |
|---|---|---|---|---|
| includeParams | false | get | Object/String | 值为'none', 'get' 或'all'. |
| scheme | false | Object/String | scheme属性 | |
| value | false | Object/String | value如果不提供就用当前action | |
| action | false | Object/String | 用来生成url的action,如果没有则使用value | |
| namespace | false | Object/String | 命名空间 | |
| method | false | Object/String | 使用的action的方法 | |
| encode | false | true | Boolean | 是否encode参数 |
| includeContext | false | true | Boolean | 是否实际的上下文环境应该包含在url中 |
| portletMode | false | Object/String | 结果portlet 的模式(mode) | |
| windowState | false | Object/String | 结果portlet窗口的状态 | |
| portletUrlType | false | Object/String | 指定这时一个 portlet 输出还是一个 action url | |
| anchor | false | Object/String | URL的锚点( anchor) | |
| id | false | Object/String | 该元素标识 |
例子
<-- Example 1 -->
<ww:url value="editGadget.action">
<ww:param name="id" value="%{selected}" />
</ww:url>
<-- Example 2 -->
<ww:url action="editGadget">
<ww:param name="id" value="%{selected}" />
</ww:url>
<-- Example 3-->
<ww:url includeParams="get" >
<:param name="id" value="%{'22'}" />
</ww:url>
11.property
描述
得到'value'的属性,如果value没提供,默认为堆栈顶端的元素.
参数
| 名称 | 必填 | 缺省 | 类型 | 描述 |
|---|---|---|---|---|
| default | false | String | 如果属性是null则显示的default值 | |
| escape | false | true | Boolean | 是否escape HTML |
| value | false | <top of stack> | Object | value to be displayed |
| id | false | Object/String | 该元素标识 |
例子
<ww:push value="myBean">
<!-- Example 1: -->
<ww:property value="myBeanProperty" />
<!-- Example 2: -->
<ww:property value="myBeanProperty" default="a default value" />
</ww:push>
Example 1 显示出myBean's getMyBeanProperty() 的执行结果.
Example 2 显示出myBean's getMyBeanProperty() 的执行结果,如果是null,则显示缺省(default)值.
本文详细介绍了Struts2框架中的Data标签,包括action、bean、debug、i18n等多个子标签的功能与使用方法,并提供了丰富的代码示例。
821

被折叠的 条评论
为什么被折叠?



