Struts2 官方教程之Struts Tags(七)——Generic Tags(Data Tags )

a

Description

A tag that creates a HTML <a >.This tag supports the same attributes as the "url" tag, including nested parameters using the "param" tag.

 

While this tag can be used with the simple theme, xhtml theme, and others, it is really designed to work best with the ajax theme. We recommend reading the ajax a template documentation for more details.

Parameters

Dynamic Attributes Allowed:
true
 
Name
Required
Default
Evaluated
Type
Description
accesskeyfalse falseStringSet the html accesskey attribute on rendered html element
actionfalse falseStringThe action to generate the URL for, if not using value
anchorfalse falseStringThe anchor for this URL
cssClassfalse falseStringThe css class to use for element
cssErrorClassfalse falseStringThe css error class to use for element
cssErrorStylefalse falseStringThe css error style definitions for element to use
cssStylefalse falseStringThe css style definitions for element to use
disabledfalse falseStringSet the html disabled attribute on rendered html element
encodefalsetruefalseBooleanWhether to encode parameters
escapeAmpfalsetruefalseBooleanSpecifies whether to escape ampersand (&) to (&amp or not
forceAddSchemeHostAndPortfalsefalsefalseBooleanSpecifies whether to force the addition of scheme, host and port or not
hreffalse falseStringThe URL.
idfalse falseStringHTML id attribute
includeContextfalsetruefalseBooleanWhether actual context should be included in URL
includeParamsfalsenonefalseStringThe includeParams attribute may have the value 'none', 'get' or 'all'
javascriptTooltipfalsefalsefalseBooleanUse JavaScript to generate tooltips
keyfalse falseStringSet the key (name, value, label) for this particular component
labelfalse falseStringLabel expression used for rendering an element specific label
labelSeparatorfalse:falseStringString that will be appended to the label
labelpositionfalse falseStringDefine label position of form element (top/left)
methodfalse falseStringThe method of action to use
namefalse falseStringThe name to set for element
namespacefalse falseStringThe namespace to use
onblurfalse falseStringSet the html onblur attribute on rendered html element
onchangefalse falseStringSet the html onchange attribute on rendered html element
onclickfalse falseStringSet the html onclick attribute on rendered html element
ondblclickfalse falseStringSet the html ondblclick attribute on rendered html element
onfocusfalse falseStringSet the html onfocus attribute on rendered html element
onkeydownfalse falseStringSet the html onkeydown attribute on rendered html element
onkeypressfalse falseStringSet the html onkeypress attribute on rendered html element
onkeyupfalse falseStringSet the html onkeyup attribute on rendered html element
onmousedownfalse falseStringSet the html onmousedown attribute on rendered html element
onmousemovefalse falseStringSet the html onmousemove attribute on rendered html element
onmouseoutfalse falseStringSet the html onmouseout attribute on rendered html element
onmouseoverfalse falseStringSet the html onmouseover attribute on rendered html element
onmouseupfalse falseStringSet the html onmouseup attribute on rendered html element
onselectfalse falseStringSet the html onselect attribute on rendered html element
openTemplatefalse falseStringSet template to use for opening the rendered html.
portletModefalse falseStringThe resulting portlet mode
portletUrlTypefalse falseStringSpecifies if this should be a portlet render or action URL. Default is "render". To create an action URL, use "action".
requiredfalsefalsefalseBooleanIf set to true, the rendered element will indicate that input is required
requiredpositionfalse falseStringDefine required position of required form element (left|right)
schemefalse falseStringSet scheme attribute
tabindexfalse falseStringSet the html tabindex attribute on rendered html element
templatefalse falseStringThe template (other than default) to use for rendering the element
templateDirfalse falseStringThe template directory.
themefalse falseStringThe theme (other than default) to use for rendering the element
titlefalse falseStringSet the html title attribute on rendered html element
tooltipfalse falseStringSet the tooltip of this particular component
tooltipConfigfalse falseStringDeprecated. Use individual tooltip configuration attributes instead.
tooltipCssClassfalseStrutsTTClassicfalseStringCSS class applied to JavaScrip tooltips
tooltipDelayfalseClassicfalseStringDelay in milliseconds, before showing JavaScript tooltips
tooltipIconPathfalse falseStringIcon path used for image that will have the tooltip
valuefalse falseStringThe target value to use, if not using action
windowStatefalse falseStringThe resulting portlet window state

Usage

To get started, use the head tag and the ajax theme. See ajax head template for more information. Then look at the usage details for the ajax a template.

 
If you want to use additional parameters in your s:a the best practice is to use a s:url to create your url and then leverage this url into your s:a tag. This is done by creating a s:url and specifying an id attribute.. like "testUrlId" in this example. Then in the s:a tag reference this id in the href attribute via " %{testUrlId}"

<s:a> 和 <s:url> 标签

      这两个标签用来创建一个URL 链接。所谓URL 连接,即是Web 中最常见的标签样式:

           <a href=""> 标签文本</a>

       但在Struts 2 中,Struts 对其做了封装,使用<s:url> 和<s:a> 来表示<a> 标签,经过Java Web 服务器的解析,客户端最终看到的还是<a> 标签。

      其中<s:a> 标签支持<s:url> 标签的所有属性,包括使用<param> 来嵌套属性参数。但是如果你想在<s:a> 中添加额外的参数,这里建议使用<s:url> 来创建你的url 。然后你再将这个url 插入到<s:a> 标签中。

 

<s:url var="testUrlId" namespace="/subscriber" action="customField" method="delete">
    <s:param name="customFieldDefinition.id" value="${id}"/>
</s:url>
<s:a errorText="Sorry your request had an error." preInvokeJS="confirm('Are you sure you want to delete this item?')" href="%{testUrlId}">
    <img src="<s:url value="/images/delete.gif"/>" border="none"/>
</s:a>

<img xsrc="<s:url value="/images/delete.gif"/>" border="none"/><s:a><img xsrc="<s:url value="/images/delete.gif"/>" border="none"/></s:a>


url
Please make sure you have read the Tag Syntax document and understand how tag attribute syntax works.
The id attribute is deprecated in Struts 2.1.x, and has been replaced by the var attribute.
Setting a default value for includeParams

The property struts.url.includeParams can be used to set the default value of the includeParams attribute.

Setting the default value of includeParams
<struts>
   ...
   <constant name="struts.url.includeParams" value="none" />
   ...
</struts>


See Constant Configuration for further information.

As of Struts 2.1.3 the includeParams constant defaults to "none".

Parameters

Dynamic Attributes Allowed:
false
 
Name
Required
Default
Evaluated
Type
Description
actionfalse falseString

The action to generate the URL for, if not using value

指定url地址为哪个action,如果没有,就用value作为url的值。

anchorfalse falseStringThe anchor for this URL指定URL的锚点
encodefalsetruefalseBooleanWhether to encode parameters是否对参数编码
escapeAmpfalsetruefalseBooleanSpecifies whether to escape ampersand (&) to (&amp or not指定是否对&进行编码
forceAddSchemeHostAndPortfalsefalsefalseBooleanSpecifies whether to force the addition of scheme, host and port or not
idfalse falseStringDeprecated. Use 'var' instead
includeContextfalsetruefalseBooleanWhether actual context should be included in URL
includeParamsfalsenonefalseString

The includeParams attribute may have the value 'none', 'get' or 'all'

指定是否包含请求参数。

methodfalse falseStringThe method of action to use
namespacefalse falseStringThe namespace to use
portletModefalse falseStringThe resulting portlet mode
portletUrlTypefalse falseStringSpecifies if this should be a portlet render or action URL. Default is "render". To create an action URL, use "action".
schemefalse falseStringSet scheme attribute
valuefalse falseStringThe target value to use, if not using action
varfalse falseString

Name used to reference the value pushed into the Value Stack

如果使用,就会把链接值放进value stack中

windowStatefalse falseStringThe resulting portlet window state

Description

This tag is used to create a URL.

这个标签是用来创建一个URL地址。

You can use the <param> tag inside the body to provide additional request parameters. If the value of a param is an Array or an Iterable all the values will be added to the URL.

你能使用<param> tag向指定的URl发送请求参数。如果参数值是一个数组或者是一个iterator,所有的值都会被添加到URl中

NOTE:

By default request parameters will be separated using escaped ampersands (i.e., &amp. This is necessary for XHTML compliance, however, when using the URL generated by this tag with the <s:property> tag, the escapeAmp attribute should be used to disable ampersand escaping.

NOTE:

When includeParams is 'all' or 'get', the parameter defined in a <param> tag will take precedence over any params included due to the includeParams attribute. For example, in Example 3 below, if there is a id parameter in the url where the page this tag is included like http://<host>:<port>/<context>/editUser.action?id=3333&name=John the generated url will be http://<host>:<port>/<context>/editUser.action?id=22&name=John because the parameter defined in the param tag will take precedence.

属性 includeParams的值' all'' get' ,在<PARAM> 标记中定义的 参数将 优先于 任何 参数 ,包括 includeParams 属性。例如,在 示例 3 所示:

      如果 有一个 id 参数 url 如这个标签 这样:

      http://<host>:<port>/<context>/editUser.action?id=3333&name=John

      生成的URL 将是

      http://<host>:<port>/<context>/editUser.action?id=22&name=John ,

      因为在param 标签中定义的 参数将 优先考虑

Examples

<-- Example 1 -->
<s:url value="editGadget.action">
    <s:param name="id" value="%{selected}" />
</s:url>

<-- Example 2 -->
<s:url action="editGadget">
    <s:param name="id" value="%{selected}" />
</s:url>

<-- Example 3-->
<s:url includeParams="get">
    <s:param name="id" value="%{'22'}" />
</s:url>



 

action
Please make sure you have read the Tag Syntax document and understand how tag attribute syntax works.

Description

This tag enables developers to call actions directly from a JSP page by specifying the action name and an optional namespace. The body content of the tag is used to render the results from the Action. Any result processor defined for this action in struts.xml will be ignored, unless the executeResult parameter is specified.

Parameters can be passed to the action using nested param tags.

这个标记使开发人员直接通过指定的动作名称(action name)和可选的命名空间(optional namespace)从一个JSP页面来调用动作(actions)。

标签的参数可以通过param标签来传递到action中

 

Placement in context

The action will not be published to the context until the whole tag is evaluated, meaning that inside the body of the tag, the action cannot be accessed, For example:

这里需要注意的是:在<action>标签内部,action是不允许被访问的

<s:action var="myAction" name="MyAction" namespace="/">
    Is "myAction" null inside the tag? <s:property value="#myAction == null" />
</s:action>
    Is "myAction" null outside the tag? <s:property value="#myAction == null" />


Will print:
Is "myAction" null inside the tag? true
Is "myAction" null outside the tag? false

Parameters

Dynamic Attributes Allowed:
false
 
Name
Required
Default
Evaluated
Type
Description
executeResultfalsefalsefalseBooleanWhether the result of this action (probably a view) should be executed/rendered指定是否将Action的处理结果包含到本页面中.默认值为false,不包含
flushfalsetruefalseBooleanWhether the writer should be flush upon end of action component tag, default to true
idfalse falseStringDeprecated. Use 'var' instead
ignoreContextParamsfalsefalsefalseBoolean

Whether the request parameters are to be included when the action is invoked

可选参数,指定该页面的请求参数是否需要传入调用的Action中,默认值是false,即传入参数

nametrue falseStringName of the action to be executed (without the extension suffix eg. .action)
namespacefalsenamespace from where tag is usedfalseStringNamespace for action to call
rethrowExceptionfalsefalsefalseBooleanWhether an exception should be rethrown, if the target action throws an exception
varfalse falseStringName used to reference the value pushed into the Value Stack

Examples

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 />
<s: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 />
<s: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>
<s:action name="actionTagAction!default" executeResult="false" />
<s:property value="#attr.stringByAction" />

bean
Please make sure you have read the Tag Syntax document and understand how tag attribute syntax works.

Description

Instantiates a class that conforms to the JavaBeans specification. This tag has a body which can contain a number of Param elements to set any mutator methods on that class.

If the var attribute is set on the BeanTag, it will place the instantiated bean into the stack's Context.

 Bean标签,当然需要一个JavaBean。它的属性值的操作是经由Bean标签中的参数属性来进行赋值。当然,它还有一个id属性可以进行赋值,这样就可以在上下文中使用这个Bean如果在BeanTag中设置了var属性值,那么它将把实例化后的bean放入到stack's Context中。

Parameters

Dynamic Attributes Allowed:
false
 
Name
Required
Default
Evaluated
Type
Description
idfalse falseStringDeprecated. Use 'var' instead
nametrue falseStringThe class name of the bean to be instantiated (must respect JavaBean specification)
varfalse falseStringName used to reference the value pushed into the Value Stack

Examples

<-- in freemarker form -->
[@s.bean name="org.apache.struts2.example.counter.SimpleCounter" var="counter"]
  [s:param name="foo" value="BAR"/]
  The value of foo is : [s:property value="foo"/], when inside the bean tag.<br />
[/s:bean]

<-- in jsp form -->
<s:bean name="org.apache.struts2.example.counter.SimpleCounter" var="counter">
  <s:param name="foo" value="BAR" />
  The value of foot is : <s:property value="foo"/>, when inside the bean tag <br />
</s:bean>

This example instantiates a bean called SimpleCounter and sets the foo property (setFoo('BAR')). The SimpleCounter object is then pushed onto the Valuestack, which means that we can call its accessor methods (getFoo()) with the Property tag and get their values.

这个例子实例化了一个名叫SimpleCounter的bean,并设置foo属性(setFoo(‘BAR’))。然后将SimpleCounter对象压入值栈(Valuestack)中,这意味着我们可以调用property tag的访问方法(getFoo())来得到它的值。

在上面的例子中,id的属性值已经设为counter,这意味着SimpleCounter对象压入值栈(Valuestack)后可以通过如下标签来访问它:

In the above example, the id has been set to a value of counter. This means that the SimpleCounter class will be placed into the stack's context. You can access the SimpleCounter class using a Struts tag:

<-- jsp form -->
<s:property value="#counter" />

<-- freemarker form --> [s:property value="#counter.foo"/]

In the property tag example, the # tells Ognl to search the context for the SimpleCounter class which has an id(key) of counter

 
date

Description

Format Date object in different ways.

The date tag will allow you to format a Date in a quick and easy way. You can specify a custom format (eg. "dd/MM/yyyy hh:mm"), you can generate easy readable notations (like "in 2 hours, 14 minutes"), or you can just fall back on a predefined format with key 'struts.date.format' in your properties file.

If that key is not defined, it will finally fall back to the default DateFormat.MEDIUM formatting.

Note: If the requested Date object isn't found on the stack, a blank will be returned.

以不同的方式格式化日期对象。

<s:date>标记允许你以一个快速简便的方式格式化一个日期,你可以自定义日期的格式(eg. "dd/MM/yyyy hh:mm")。你也可以将日期转化成一个易读的记(like"in2hours,14minutes"),

或者你可以仅仅依靠在属性文件中预定义的”struts.date.format”的key来格式化日期。

Note: 如果请求的日期对象在堆栈找不到,那么将返回空白。

 

Configurable attributes are :-

  • name
  • nice
  • format

Following how the date component will work, depending on the value of nice attribute (which by default is false) and the format attribute.

Condition 1: With nice attribute as true

i18n keydefault
struts.date.format.past{0} ago
struts.date.format.futurein {0}
struts.date.format.secondsan instant
struts.date.format.minutes{0,choice,1#one minute|1<{0} minutes}
struts.date.format.hours{0,choice,1#one hour|1<{0} hours}{1,choice,0#|1#, one minute|1<, {1} minutes}
struts.date.format.days{0,choice,1#one day|1<{0} days}{1,choice,0#|1#, one hour|1<, {1} hours}
struts.date.format.years{0,choice,1#one year|1<{0} years}{1,choice,0#|1#, one day|1<, {1} days}

Condition 2: With nice attribute as false and format attribute is specified eg. dd/MM/yyyyy

In this case the format attribute will be used.

Condition 3: With nice attribute as false and no format attribute is specified

i18n keydefault
struts.date.formatif one is not found DateFormat.MEDIUM format will be used

通常,nice属性和format属性不同时指定,(不指定nice属性时,该属性值为false)。因为指定nice为true,代表输出指定日期和当前时刻的时差;指定format属性,则表明将指定日期按format指定的格式来个格式化输出。

如果即没有指定format,也没指定nice=“true”,则系统会到国际化资源文件中寻找key为struts.date.format的消息,将该消息当成格式化文本来格式化日期。如果无法找到key为struts.date.format的消息,则默认采用DateFormat.MEDIUM格式输出

 

Parameters

Dynamic Attributes Allowed:
false
 
Name
Required
Default
Evaluated
Type
Description
formatfalse falseStringDate or DateTime format pattern
idfalse falseStringDeprecated. Use 'var' instead
nametrue falseStringThe date value to format
nicefalsefalsefalseBooleanWhether to print out the date nicely

用于指定是否输出指定日期和当前时刻的时差。默认是false,即不输出

timezonefalse falseStringThe specific timezone in which to format the date
varfalse falseStringName used to reference the value pushed into the Value Stack

<s:date name="person.birthday" format="dd/MM/yyyy" />
<s:date name="person.birthday" format="%{getText('some.i18n.key')}" />
<s:date name="person.birthday" nice="true" />
<s:date name="person.birthday" />


<s:debug>

这个学过struts的地球人都知道:

     输出值栈中的内容

i18n
Please make sure you have read the Tag Syntax document and understand how tag attribute syntax works.

Description

Gets a resource bundle and place it on the value stack. This allows the text tag to access messages from any bundle, and not just the bundle associated with the current action.

Parameters

Dynamic Attributes Allowed:
false
 
Name
Required
Default
Evaluated
Type
Description
nametrueStringfalseStringName of resource bundle to use (eg foo/bar/customBundle)

Examples

<s:i18n name="myCustomBundle">
   The i18n value for key aaa.bbb.ccc in myCustomBundle is <s:property value="text('aaa.bbb.ccc')" />
</s:i18n>


 

include
Please make sure you have read the Tag Syntax document and understand how tag attribute syntax works.

Description

Include a servlet's output (result of servlet or a JSP page).

Note: Any additional params supplied to the included page are not accessible within the rendered page through the <s:property...> tag since no valuestack will be created. You can, however, access them in a servlet via the HttpServletRequest object or from a JSP page via a scriptlet.

包含一个servlet的输入(servlet或JSP页面的结果)。

Note: 你不能通过<s:property...>来访问所包含页面的任何属性,因为没有值(valuestack)会被创建。然而,你可以通过HttpServletRequest对象在一个servlet中来访问它们,或者是通过scriptlet在jsp页面上访问它们。

How To access parameters
Parameters are passed as request parameters, so use the ${param.ParamName} notation to access them. Do not use the property tag to access parameters in included files.

参数作为request参数被传递,因此可以使用$ {param.ParamName}标记来访问它们。不要使用<s:property...>标记来访问包含文件的参数。

Parameters

Dynamic Attributes Allowed:
false
 
Name
Required
Default
Evaluated
Type
Description
valuetrue falseStringThe jsp/servlet output to include

Example

<-- One: -->
<s:include value="myJsp.jsp" />

<-- Two: -->
<s:include value="myJsp.jsp">
   <s:param name="param1" value="value2" />
   <s:param name="param2" value="value2" />
</s:include>

<-- Three: -->
<s:include value="myJsp.jsp">
   <s:param name="param1">value1</s:param>
   <s:param name="param2">value2</s:param>
</s:include>

 

Example one - do an include myJsp.jsp page
Example two - do an include to myJsp.jsp page with parameters param1=value1 and param2=value2
Example three - do an include to myJsp.jsp page with parameters param1=value1 and param2=value2

param
Please make sure you have read the Tag Syntax document and understand how tag attribute syntax works.

Description

This tag can be used to parameterize other tags.

The include tag and bean tag are examples of such tags.

The parameters can be added with or without a name as key. If the tag provides a name attribute the parameters are added using the {@link Component#addParameter(String, Object) addParamter} method. For unnamed parameters the Tag must implement the UnnamedParametric interface defined in this class (e.g. The TextTag does this).

This tag has the following two paramters.

  • name (String) - the name of the parameter
  • value (Object) - the value of the parameter

Note: When you declare the param tag, the value can be defined in either a value attribute or as text between the start and end tag. Struts behaves a bit different according to these two situations. This is best illustrated using an example:
<param name="color">blue</param> <-- (A) -->
<param name="color" value="blue"/> <-- (B) -->
In the first situation (A) the value would be evaluated to the stack as a java.lang.String object. And in situation (B) the value would be evaluated to the stack as a java.lang.Object object.
For more information see WW-808.

Parameters

Dynamic Attributes Allowed:
false
 
Name
Required
Default
Evaluated
Type
Description
namefalse falseStringName of Parameter to set
valuefalseThe value of evaluating provided name against stackfalseStringValue expression for Parameter to set

Examples

<pre>
<ui:component>
 <ui:param name="key"     value="[0]"/>
 <ui:param name="value"   value="[1]"/>
 <ui:param name="context" value="[2]"/>
</ui:component>
</pre>


 

where the key will be the identifier and the value the result of an OGNL expression run against the current ValueStack.

property
Please make sure you have read the Tag Syntax document and understand how tag attribute syntax works.

Description

Used to get the property of a value, which will default to the top of the stack if none is specified.

用于获取一个属性的值。Property顾名思义,可以与<s:bean>标签结合使用,一个是给bean赋值,一个是从bean中读取值。

Parameters

Dynamic Attributes Allowed:
false
 
Name
Required
Default
Evaluated
Type
Description
defaultfalse falseStringThe default value to be used if value attribute is null
escapefalsetruefalseBooleanDeprecated. Use 'escapeHtml'. Whether to escape HTML
escapeCsvfalsefalsefalseBooleanWhether to escape CSV (useful to escape a value for a column)
escapeHtmlfalsetruefalseBooleanWhether to escape HTML
escapeJavaScriptfalsefalsefalseBooleanWhether to escape Javascript
escapeXmlfalsefalsefalseBooleanWhether to escape XML
valuefalse<top of stack>falseObjectValue to be displayed

Examples

<s:push value="myBean">
    <!-- Example 1: -->
    <s:property value="myBeanProperty" />

    <!-- Example 2: -->TextUtils
    <s:property value="myBeanProperty" default="a default value" />
</s:push>


 

Example 1 prints the result of myBean's getMyBeanProperty() method.
Example 2 prints the result of myBean's getMyBeanProperty() method and if it is null, print 'a default value' instead.



 

push
Please make sure you have read the Tag Syntax document and understand how tag attribute syntax works.

Description

Push value on stack for simplified usage.

Parameters

Dynamic Attributes Allowed:
false
 
Name
Required
Default
Evaluated
Type
Description
valuetrue falseStringValue to push on stack

Examples

<s:push value="user">
    <s:propery value="firstName" />
    <s:propery value="lastName" />
</s:push>


Pushed user into the stack, and hence property tag could access user's properties
(firstName, lastName etc) since user is not at the top of the stack


<s:push value="myObject">                              ----- (1)
     <s:bean name="jp.SomeBean" var="myBean"/>        ----- (2)
        <s:param name="myParam" value="top"/>        ----- (3)
     </s:bean>
 </s:push>


when in (1), myObject is at the top of the stack
when in (2), jp.SomeBean is in the top of stack, also in stack's context with key myBean
when in (3), top will get the jp.SomeBean instance


<s:push value="myObject">                                       ---(A)
   <s:bean name="jp.SomeBean" var="myBean"/>                   ---(B)
      <s:param name="myParam" value="top.mySomeOtherValue"/>  ---(C)
   </s:bean>
</s:push>


when in (A), myObject is at the top of the stack
when in (B), jp.SomeBean is at the top of the stack, also in context with key myBean
when in (C), top refers to jp.SomeBean instance. so top.mySomeOtherValue would invoke SomeBean's mySomeOtherValue() method


<s:push value="myObject">                                 ---- (i)
   <s:bean name="jp.SomeBean" var="myBean"/>             ---- (ii)
      <s:param name="myParam" value="[1].top"/>         -----(iii)
   </s:bean>
</s:push>

when in (i), myObject is at the top of the stack
when in (ii), jp.SomeBean is at the top of the stack, followed by myObject
when in (iii), [1].top will returned top of the cut of stack starting from myObject, namely myObject itself


set
Please make sure you have read the Tag Syntax document and understand how tag attribute syntax works.

Description

The set tag assigns a value to a variable in a specified scope. It is useful when you wish to assign a variable to a complex expression and then simply reference that variable each time rather than the complex expression. This is useful in both cases: when the complex expression takes time (performance improvement) or is hard to read (code readability improvement).

Set标签比较简单。Set标签用户将某一值赋给某一变量,因此,任何对该项值的引用都可以通过该变量来得到该值。该变量的活动范围可自定义。如下例中,定义一健/值对,对值的引用,直接引用值就可以

If the tag is used with body content, the evaluation of the value parameter is omitted. Instead, the String to which the body eveluates is set as value for the scoped variable.

The scopes available are as follows :-

  • application - the value will be set in application scope according to servlet spec. using the name as its key
  • session - the value will be set in session scope according to servlet spec. using the name as key
  • request - the value will be set in request scope according to servlet spec. using the name as key
  • page - the value will be set in page scope according to servlet sepc. using the name as key
  • action - the value will be set in the request scope and Struts' action context using the name as key

NOTE:

If no scope is specified, it will default to action scope.

Parameters

Dynamic Attributes Allowed:
false
 
Name
Required
Default
Evaluated
Type
Description
idfalse falseStringDeprecated. Use 'var' instead
namefalse falseStringDeprecated. Use 'var' instead
scopefalseactionfalseStringThe scope in which to assign the variable. Can be application, session, request, page, or action.
valuefalse falseStringThe value that is assigned to the variable named name
varfalse falseStringName used to reference the value pushed into the Value Stack

Examples

s:set name="personName" value="person.name"/>
Hello, <s:property value="#personName"/>. How are you?


text
Please make sure you have read the Tag Syntax document and understand how tag attribute syntax works.

Description

Render a I18n text message.

The message must be in a resource bundle with the same name as the action that it is associated with. In practice this means that you should create a properties file in the same package as your Java class with the same name as your class, but with .properties extension.

If the named message is not found in a property file, then the body of the tag will be used as default message. If no body is used, then the stack will be searched, and if a value is returned, it will written to the output. If no value is found on the stack, the key of the message will be written out.

For more details on using resource bundles with Struts 2 read the localization guide.

Parameters

Dynamic Attributes Allowed:
false
 
Name
Required
Default
Evaluated
Type
Description
idfalse falseStringDeprecated. Use 'var' instead
nametrue falseStringName of resource property to fetch
searchValueStackfalsetruefalseBooleanSearch the stack if property is not found on resources
varfalse falseStringName used to reference the value pushed into the Value Stack

Examples

Accessing messages from a given bundle (the i18n Shop example bundle in the first example) and using bundle defined through the framework in the second example.</p>



<!-- First Example -->
<s:i18n name="struts.action.test.i18n.Shop">
    <s:text name="main.title"/>
</s:i18n>

<!-- Second Example -->
<s:text name="main.title" />

<!-- Third Examlpe -->
<s:text name="i18n.label.greetings">
   <s:param >Mr Smith</s:param>
</s:text>



Other example

<s:text name="format.money"><s:param name="value" value="myMoneyValue"/></s:text>


where the following is in a regular (possibly locale-specific) properties file:

format.money={0,number,currency}


For more about formatting text, see

  1. http://java.sun.com/j2se/1.4.2/docs/api/java/text/MessageFormat.html
  2. http://java.sun.com/docs/books/tutorial/i18n/format/decimalFormat.html

If you wish to use i18n in your tag attributes

This will not work:

<s:textfield name="lastName" label="<s:text name="person.lastName"/>" ../>

Instead, you should use the getText() method that you inherit when your Action extends XWork's ActionSupport:

<s:textfield name="lastName" label="getText('person.lastName')" ../>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值