每种框价都会有国际化的支持,struts2的国际化大致上分为页面的国际化,Action的国际化以及xml的国际化
首先在struts.properties文件中加入以下内容:
struts.custom.i18n.resources=messageResource
或在struts.xml中加入
<constant name="struts.custom.i18n.resources" value="messageResource"></constant>
资源文件的命名格式: 名称_语言代码_国家代码. Properties
如果创建中文和英语国际化,那么资源文件名称为
messageResource_zh_CN.properties和messageResource_en_US.properties
1. jsp页面的国际化
通过使用标签<s:text name="label.helloWorld"/>输出国际化
label.helloWorld为资源文件中定义的key
在messageResource_en_US.properties加入以下内容
label.hello=hello {0}
label.helloWorld=hello,world
在messageResource_zh_CN.properties加入以下内容
label.hello=你好 {0}
label.helloWorld=你好,世界
(1). <s:text name="label.helloWorld"/>
<s:property value="%{getText('label.helloWorld')}"/>
上面两个都为输出一个hello word的两种表示
<s:textfield name="name" key="label.helloWorld"/>
<s:textfield name="name" label="%{getText('label.helloWorld')}"/>
显示一个文本框,文本框的标题进行国际化
(2). 使用<s:i18n>标签指定从某个特定的资源文件中取数据
<s:i18n name="messageResource">
<s:text name="label.helloWorld"></s:text>
</s:i18n>
指定在从messageResource取资源
(3).
<s:text name="label.hello">
<s:param>callan</s:param>
</s:text>
使用带参数的资源.<s:param>可以替换label.hello=hello {0}中的{0}
2. Action的国际化
Action的国际化主要是通过getText(String key)方法实现的
-
public String execute() throws Exception {
-
-
-
-
-
- String str1 = getText("label.helloWorld");
-
- System.out.println(str1);
-
-
-
-
-
- String str2 = getText("label.hello",new String[]{"fjf"});
-
- System.out.println(str2);
-
-
-
-
-
- List l = new ArrayList();
-
- l.add("callan");
-
- String str3 = getText("label.hello",l);
-
- System.out.println(str3);
-
-
-
- return SUCCESS;
-
- }
3. 参数化国际化
在messageResource_en_US.properties加入以下内容
userName=userName
userName.required=${getText('userName')} is required
在messageResource_zh_CN.properties加入以下内容
userName=用户名
userName.required=${getText('userName')} 不能为空
在Action中
String str4 = getText("userName.required");
System.out.println(str4);
userName.required=${getText('userName')}会取国际化的用户名
4. 使用校验框价时,提示信息可以国际化
<field name="userName">
<field-validator type="requiredstring">
<message key=”userName.required”> </message>
</field-validator>
</field>
国际化资源文件分为三种级别
(1) 全局资源文件,可以被整个应该程序引用,也就是struts.custom.i18n.resources=messageResource指定的文件
(2) 包级资源文件,每个包的根目录下可以新建资源文件,仅被当前包中的类访问.文件名格式为:package_语言代码_国家代码.
(3) Action级资源文件,仅被当前Action引用,名称为action名_语言代码_国家代码
查找顺序为从小范围到大范围, Action级优先级最大
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
<init-param>
<param-name>struts.custom.i18n.resources</param-name>
<param-value>globalMessages</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
分享到:
相关推荐
6. struts.custom.i18n.resources:这是一个附加的国际化属性文件路径,Struts2将加载这个文件中的国际化信息。 7. struts.custom.properties:这是一个附加的配置文件路径,Struts2将加载这个文件中的设置和参数。...
6. **struts.custom.i18n.resources**: 添加自定义的国际化资源文件,如`struts.custom.i18n.resources=myMessages`。 7. **struts.multipart.maxSize**: 设置上传文件的最大大小。 8. **struts.enable.Dynamic...
struts.custom.i18n.resources Location of additional localization properties files to load 加载附加的国际化属性文件(不包含.properties后缀) struts.custom.properties Location of additional ...
#### struts.custom.i18n.resources **含义**:指定要加载的附加本地化资源文件的位置。 **示例**:如果项目中有多个语言版本的需求,可以通过此属性指定不同语言的资源文件位置,如`i18n_zh_CN.properties`。 **...
<constant name="struts.custom.i18n.resources" value="global/messages"/> ``` 这样,Struts2就会在指定的路径下查找资源文件。 4. **浏览器设置与请求上下文** - 浏览器的Accept-Language头信息会发送用户的...
这里,`struts.i18n.encoding`指定了资源文件的编码,`struts.action.extension`定义了动作映射的扩展名,而`struts.custom.i18n.resources`则列出了应用中所有要加载的资源包名称。 在Action类中,我们可以使用...
<constant name="struts.custom.i18n.resources" value="global, messages"/> ``` 这里指定了`messages.properties`文件所在的包。 3. 使用Action类:在Action类中,我们可以通过`getText()`方法获取国际化文本...
struts.custom.i18n.resources=messageResource ``` 或者在`struts.xml`配置文件中添加: ```xml <constant name="struts.custom.i18n.resources" value="messageResource"/> ``` 这里的`messageResource`是你定义的...
<constant name="struts.custom.i18n.resources" value="struts/i18n/messages"/> ``` 3. 在Action或视图中使用:在Action中,你可以通过`ActionContext`获取`MessageResources`对象,然后调用`getMessage()`方法...
4. **struts.custom.i18n.resources**: 添加自定义的国际化资源文件,如`struts.custom.i18n.resources=myResources`。 5. **struts.objectFactory**: 配置对象工厂,例如`struts.objectFactory=spring`使用Spring...
通过设置常量`struts.custom.i18n.resources`的值为`message`,我们指定了基础名称(Basename): ```xml <constant name="struts.custom.i18n.resources" value="message" /> ``` 接下来是JSP页面的国际化: 1. ...
- **全局资源文件**:通常存放在src目录下,如`message_zh_CN.properties`和`message_en_US.properties`,在`struts.xml`配置文件中通过`<constant>`标签指定,例如`<constant name="struts.custom.i18n.resources...
<constant name="struts.custom.i18n.resources" value="global/messages"/> ``` 这将告诉Struts2在哪里查找资源文件,并指定字符编码。 3. 使用资源键:在Action类、JSP页面或FreeMarker模板中,我们可以通过`...
这里,`struts.i18n.encoding`设置了资源文件的编码,而`struts.custom.i18n.resources`指定了资源文件所在的包路径。 Eclipse是一款强大的Java集成开发环境,它提供了丰富的插件来增强开发体验。对于国际化支持,...
#### struts.custom.i18n.resources 指定了Struts 2应用所需的国际化资源文件,如果有多个国际化资源文件,多个文件名间以英文逗号`,`分隔。 #### struts.diSPAtcher.parametersWorkaround 针对某些Java EE服务器不...
`struts.i18n.encoding`定义了资源文件的编码,`struts.action.extension`设置了支持的请求扩展名,`struts.custom.i18n.resources`指定了资源文件的路径。 四、Action类中的国际化 在Action类中,我们可以使用`...
**国际化资源文件**:为了支持多语言环境,可以通过在`struts.properties`文件中配置`Struts.custom.i18n.resources`属性来指定资源文件。资源文件可以分为全局资源文件、包级别的资源文件和类级别的资源文件。当...
这里,`struts.i18n.encoding`指定字符编码,`struts.action.extension`设置Action的扩展名,`struts.custom.i18n.resources`定义了资源束的路径。 4. 获取和显示文本:在JSP页面中,使用`<s:text>`标签获取并显示...
- 这里`struts.i18n.encoding`指定了资源文件的编码,而`struts.custom.i18n.resources`则告诉Struts2在哪里查找资源包。 4. **在Action和JSP中使用**: - 在Action类中,可以通过`ActionContext`获取到资源包,...