`
PV_love
  • 浏览: 30408 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

struts2 访问国际化资源 <s:text>作为属性

 
阅读更多
保留全局级国际化信息资源文件。并在message.properteis中增加一个带有参数的国际化信息。
labela = labela in zh_CN  
labelb = labelb,{0}


<s:text>访问国际化信息
用<s:text>标签来访问国际化信息,只需要在它的name属性上填入需要的key即可。下面,来看看它的其它的属性。
1:使用带参数的国际化信息
       可以用参数把一些可变值传给国际化信息,在<s:text>标签访问国际化信息的时候,只需要配合上<s:param>子标签即可传入参数,示例如下:

<%@ taglib prefix="s" uri="/struts-tags" %>  
<s:text name="labela"/>  
<hr>  
<s:text name="labelb">  
    <s:param>ok</s:param>  
</s:text>
 
上面的示例中,key为labela的国际化信息没有参数,因此<s:text>标签直接结束,没有子标签;而key为labelb的国际化信息有参数,因此<s:text>标签用<s:param>子标签来传入参数值ok。在运行的时候,参数{0}被替换为ok

2:指定国际化信息来源
再来添加一个国际化信息来源。比如,恢复包级国际化信息资源文件,也就是package_zh_CN.properties文件,内容如下:

labela = labela in zh_CN with package  

现在,同时存在全局级国际化信息资源和包级国际化信息资源,根据前面所学的知识,包级国际化信息资源会覆盖全局级国际化信息资源,因此,<s:text name=”labela”/>将会返回在package_zh_CN.properties中定义的labela = labela in zh_CN with package。
       现在需要仍然显示全局级的国际化信息,该怎么办呢?
       可以通过<s:i18n>标签,来为<s:text>标签指定国际化信息来源。如果<s:text>标签作为<s:i18n>标签的子标签出现,则会使用<s:i18n>指定的国际化信息来源。把jsp修改如下:

<%@ taglib prefix="s" uri="/struts-tags" %>  
  
<s:text name="labela"/>  
<hr>  
<s:i18n name="message">  
    <s:text name="labela"/>  
</s:i18n>  

解释一下如何引用国际化信息资源,仍然分为三种情况讨论:
全局级国际化信息资源:直接用文件前缀名即可—message。
包级国际化信息资源:用这个包的全限定名+package—cn.javass.i18n.package。
类级国际化信息资源:用这个类的全限定名—cn.javass. i18n.I18NAction。
上面的示例中,第一个<s:text>标签没有作为<s:i18n>的标签子标签出现,则它访问包级国际化信息资源;而第二个<s:text>标签作为<s:i18n>标签的子标签出现,则它访问<s:i18n>标签中指定的message国际化信息资源

<%@ taglib prefix="s" uri="/struts-tags" %>  
<s:form>  
    <s:textfield name="name1" label="labela"/>  
</s:form>


它采用<s:form>的默认主题(xhtml)建立了一个一行一列的表单,其中,<s:textfield>标签的label属性用于在文本框前生成这个文本框的说明,label属性就是简单的把它的值“labela”放在了文本框前。
       现在只需要做个小小的改动,就可以访问国际化的信息了,简单的把label属性改为key属性,就可以访问国际化信息来显示文本框前的说明信息了,示例如下:

<%@ taglib prefix="s" uri="/struts-tags" %>  
<s:form>  
    <s:textfield name="name1" key="labela"/>  
</s:form>
 
与<s:textfield>类似,s标签中的其他可见表单域标签也都支持使用key属性来访问国际化信息,包括:<s:label/>、<s:textarea/>、<s:password/>、<s:submit/>等等,这里就不再去列举了。
使用表单标签还有两个问题:
表单标签在访问国际化信息的时候,不能使用<s:param>标签指定参数值。
表单标签也可以使用<s:i18n>标签来指定国际化信息来源,代码示例如下:

<%@ taglib prefix="s" uri="/struts-tags" %>  
<s:form>  
    <s:textfield name="name1" key="labela"/>  
</s:form>  
<hr>  
<s:i18n name="message">  
    <s:form>  
        <s:textfield name="name1" key="labela"/>  
    </s:form>  
</s:i18n> 

可以看到,第一个仍访问默认的国际化信息来源,而第二个则指定了名称为message的全局级国际化信息。

在Action中访问国际化信息
前面都是在页面上来访问国际化的信息,如果要在Action中访问国际化信息,该怎么办呢?
       如果我们自己写的Action类继承自ActionSupport,就可以直接使用ActionSupport的一系列getText方法来访问国际化信息。这些方法声明于ActionSupport类实现的TextProvider接口。
分为三种情况讨论:
访问没有参数的国际化信息。
直接调用最简单的getText(String aTextName)即可,传入国际化信息的key,这个在前面讲ActionSupport的时候,就示例过这种情况。
访问有参数的国际化信息。
调用可以设置参数的getText(String aTextName,String defaultValue,String… args),其中,第一个参数为国际化信息的key,第二个参数为找不到此key时返回的默认值,第三个String[]参数传入需要传给国际化信息的参数。

指定国际化信息来源。
调用其getTexts(String aBundleName)可以返回一个ResourceBundle对象,可然后就可以自由操作此ResourcBundle对象。
       比如,可以在execute方法中访问国际化信息,示例如下:


public class I18NAction  extends ActionSupport{  
    public String execute() throws Exception {  
        System.out.println(this.getText("labela"));  
        System.out.println(this.getText("labelb",null,"ok"));  
        ResourceBundle bundle = this.getTexts("message");  
        System.out.println(bundle.getString("labela"));  
        return SUCCESS;  
    }  
}  

在上例中,第一句访问默认的国际化信息,第二句访问默认的国际化信息并传入参数值为ok,第三句访问名为message的全局国际化信息。访问这个Action,运行的结果是


引用
labela in zh_CN with package 
labelb,ok 
labela in zh_CN 

分享到:
评论

相关推荐

    struts2 标签库 帮助文档

    &lt;%@ taglib prefix="s" uri="/struts-tags" %&gt; 就能使用struts2.0的标签库 下面就介绍每个标签的具体应用实例说明:按字母排列 A: 1. 2. &lt;s:a href=""&gt;&lt;/s:a&gt;-----超链接,类似于html里的&lt;a&gt;&lt;/a&gt; 3. &lt;s:...

    struts2标签介绍

    1. `&lt;s:i18n&gt;` - 加载国际化资源包到值栈,实现多语言支持。 2. `&lt;s:include&gt;` - 包含其他JSP或Servlet页面。 **L组标签:** 1. `&lt;s:label&gt;` - 创建只读标签,常用于显示文本。 **M组标签:** 1. `&lt;s:merge&gt;` - ...

    struts2-s标签

    而在 Struts2 中,所有的标签都被统一管理,并通过在 JSP 文件头部声明 `&lt;%@ taglib prefix="s" uri="/struts-tags" %&gt;` 来启用 Struts2 的标签库。这种方式简化了开发过程中的配置工作,使得开发者可以更加专注于...

    Struts_2_标签库(文档手册)_Tags-API-CLSW-JSP

    它支持Struts 2的动态属性,如URL参数绑定和国际化。 #### `&lt;s:action&gt;` 标签 用于执行一个指定的动作,通常在JSP页面中作为按钮或链接的事件处理,可以将控制权转移至另一个动作类,实现视图到控制器的跳转。 ##...

    struts2标签说明.pdf

    Struts2的`&lt;s:i18n&gt;`标签用于国际化操作,它可以加载资源包并将其放入值堆栈,使得`&lt;s:text&gt;`等标签能够访问资源包中的信息。例如: ```jsp &lt;s:i18n name="myResourceBundle"/&gt; &lt;s:text name="greeting"/&gt; ``` `&lt;s...

    struts2标签介绍2

    8. **国际化**:Struts2提供了 `&lt;s:text&gt;` 和 `&lt;s:textfield&gt;` 等标签的资源键参数,支持多语言环境下的应用开发。 在给定的文件名中,我们看到视频课程可能涵盖了Struts2标签的多个方面,如`48_尚学堂马士兵_...

    struts2.0标签库简介

    `&lt;s:i18n&gt;` - 国际化标签 - 支持多语言应用,根据用户的语言环境显示不同的文本。 #### 22. `&lt;s:include&gt;` - 包含标签 - 将其他JSP页面或资源嵌入当前页面,增强模块化设计。 #### 23. `&lt;s:inputtransferselect...

    struts2:我想用struts标签来统计购物车的总价

    `&lt;s:text&gt;`结合国际化资源文件显示文本等。 #### 四、实现方案 要实现购物车总价的统计,主要步骤如下: 1. **获取购物车列表**:通常情况下,购物车信息会保存在用户的Session中或数据库中。这里假设已经有一个名...

    Struts 2.0 标签库简介.doc

    - `&lt;s:i18n name=""&gt;`: 加载资源包到值堆栈,支持国际化。 - `&lt;s:include value=""&gt;`: 包含一个输出,可以是servlet或jsp页面。 J. 遍历与迭代: - `&lt;s:iterator&gt;`: 用于遍历集合,是JSP中最常用的标签之一。 K. ...

    struts-tags

    7. **国际化和本地化**:Struts2-Tags支持多语言环境,`&lt;s:text&gt;`标签可以轻松地实现文本资源的国际化,通过改变locale参数,可以切换不同的语言版本。 8. **验证和错误处理**:Struts2的标签库内建了验证机制,...

    struts2.0常用标签和实例

    - `&lt;s:i18n&gt;` 标签用于加载资源包,以便在 JSP 页面中访问国际化信息。例如,`&lt;s:i18n name="resourceBundlePath"&gt;`,其中 `name` 指定资源包的类路径。 4. 包含标签: - `&lt;s:include&gt;` 标签用于包含 JSP 或 ...

    中文-Struts2-Tags-API chm格式 非常详细的标签使用说明有例子

    7. **国际化标签**:如`s:i18n`用于国际化,`&lt;s:text&gt;`和`s:resourcebundle`用于显示不同语言的文本。 8. **其他辅助标签**:包括布局和样式相关的标签,如`s:head`添加页面头部信息,`s:css`引入CSS文件,`s:...

    重要知识struts2标签说明.pdf

    这样,可以使用`&lt;s:text&gt;`标签来访问资源包中的任何信息,而不仅仅是与当前Action相关联的资源。 4. **Include标签** `&lt;s:include&gt;`标签用于包含其他Servlet或JSP页面的输出。`value`属性指定要包含的页面路径,`...

    Struts2学习之二--Struts2标签介绍

    **描述**:用于国际化处理,可以加载资源包到值堆栈,使`text`标签能够访问任意资源包的信息,而不仅限于当前action关联的资源包。 **参数**:通常与`&lt;s:text&gt;`标签配合使用,通过配置文件或属性文件指定不同语言...

    美河原创视频Struts 2.0视频配套PPT

    ",然后通过 `&lt;s:text&gt;` 标签配合 `&lt;s:param&gt;` 标签传递参数,如 `&lt;s:text name="helloMessage"&gt;&lt;s:param value="username"/&gt;&lt;/s:param&gt;&lt;/s:text&gt;`。 6. **使用 Java.text.MessageFormat**: - 当需要填充占位符时...

    struct及其struct2.0标签(OGNL)讲解,有实例

    3. **国际化**:通过`&lt;s:text&gt;`和`&lt;s:property&gt;`标签结合资源包,可以实现多语言支持。 4. **异常处理**:`&lt;s:actionerror&gt;`和`&lt;s:globalerror&gt;`标签用于显示全局或特定动作的错误信息。 5. **动态方法调用**:`&lt;s...

    Struts2的国际化

    在JSP页面中,使用`&lt;s:text&gt;`标签访问资源文件中的内容。例如,`&lt;s:text key="welcome.message" /&gt;`将显示`defaultMessage.properties`或相应语言版本文件中`welcome.message`键对应的值。值得注意的是,当与表单...

    struts2标签详解

    - **描述**:加载资源包到值栈中,使得 `&lt;s:text&gt;` 标签可以访问任何资源包的信息而不仅限于当前 action 关联的资源包。 - **参数**: - `name`:必需参数,资源包的类路径。 - `id`:可选参数,用于标识元素的 ID...

    javaweb标签大全

    JavaWeb标签大全是一个集合了多种常见JavaWeb开发中使用的标签库的资源,涵盖了Struts2、Struts、JSTL、JSF、JSP以及Spring等框架或技术的相关标签。这些标签在JavaWeb开发中起着至关重要的作用,极大地提高了开发...

    struts1.0,struts2.0国际化

    2. **资源文件**: Struts2.0默认查找`struts.properties`或`struts-default.properties`,并允许在`OgnlValueStack`中使用`@`符号访问资源键。例如,`@hello.message@`。 3. **使用国际化**: 在JSP页面中,可以使用`...

Global site tag (gtag.js) - Google Analytics