struts2访问国际化消息的四种方式

Struts2的国际化是建立在java国际化的基础之上的,因此具有强大的国际互能力。Struts2运行时自动检测当前的

Location,然后使用RsourceBundle加载对应的Locale资源文件。因为Struts2对java的国际化进行了封装,因此国际化起来更简单,用户一般提供不同国家的消息资源即可。在Struts2的国际化包含三个部分:前台的国际化,Action中的国际化,验证配置文件的国际化。

在Struts2中加载全局资源文件

国际化的前提是如何让Struts2能够加载到国际化消息资源文件。加载国际化消息资源文件的方式有两种。

1.在src目录下创建一个struts.propertied文件,服务器启动时会自动加载该文件。在这个文件中写入

struts.custom.i18n.resources=globalResourceMessages,服务器会自动加载前缀为globalResourceMessages的资源文件。

2.或者在struts.xml文件中添加<constant name="strtus.custom.i18n.resources" value="globalResourceMessages">

</constant>服务器会自动加载前缀为globalResourceMessages的资源文件。如下所示:

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">

<struts>

<constant name="strtus.custom.i18n.resources" value="globalResourceMessages">

<package name="struts2resource" extends="struts-default">

...

</package>

</struts>

Struts2访问国际化消息

访问国际化消息资源文件时Struts2国际化的重要组成部分,在struts2中访问国际化消息主要有以下四种方式:

(1)JSP页面:<s:text name="key">,如下:

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>

<%@ taglib prefix="s" uri="/struts-tags"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title><s:text name="title"></s:text></title>

</head>

<body>

//输出国际化消息中的内容

<s:text name="content"></s:text>

<s:form action="resourceaction">

<s:textfield name="user" key="user"></s:textfield>

<s:password name="pass" key="pass"></s:password>

<s:submit key="submit"></s:submit>

</s:form>

</body>

</html>

在src目录下的struts.properties文件的内容:

struts.custom.i18n.resources=globalResourceMessages

globalResourceMessages_zh_CN.properties文件的内容

title=\u8BBF\u95EE\u6D88\u606F\u6587\u4EF6

content=\u8FD9\u662F\u4E2D\u6587\u9875\u9762

user=\u7528\u6237

pass=\u5BC6\u7801

string.null=\u7528\u6237\u4E0D\u80FD\u4E3A\u7A7A

submit=\u767B\u5F55

welcome={0},\u6B22\u8FCE\u4F60{1}

上面的<s:text name="content"></s:text>将会输出content=\u8FD9\u662F\u4E2D\u6587\u9875\u9762,也就是这是中文页面。

globalResourceMessages_en_US.properties文件的内容:

title=Access information

content=This is English

user=User

pass=Pass

string.null=user not null\!

submit=Submit

welcome={0},welcome to {1}

(2)Action类中:使用ActionSupport类的getText方法.

下面的这个Action对前面提交过来的数据的处理,

package action;

import com.opensymphony.xwork2.ActionSupport;

public class ResourceAction extends ActionSupport {

private static final long serialVersionUID = 1L;

private String user;

@Override

public String execute() throws Exception {

//输出资源文件中content的值

System.out.println(getText("content"));

//以下在ACtion中输出带占位符的国际化消息

String s[] ={getUser(),"理央silence!"};

String msg = getText("welcome",s);

System.out.print(msg);

return super.execute();

}

public String getUser() {

return user;

}

public void setUser(String user) {

this.user = user;

}

}

其中,String msg = getText("welcome",s)是调用getText(String aTextNmae,List args)或getText(String key,String[] args)方法来田中占位符。

(3)表单元素:在标签中指定一个key

在第一个使用JSP页面时就已经使用了该表单元素<s:submit key="submit"></s:submit>

(4)验证文件(XXX-validation.xml):在<message>中指定一个key:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">

<validators>

<field name="user">

<field-validator type="requiredstring">

<param name="trim">true</param>

<message key="string.null"></message>

</field-validator>

</field>

</validators>

其中<message key="string.null"></message>就是指定消息资源文件。

时间: 2024-10-07 22:03:39

struts2访问国际化消息的四种方式的相关文章

Struts2中访问web元素的四种方式

Struts2中访问web元素的四种方式如下: 通过ActionContext来访问Map类型的request.session.application对象. 通过实现RequestAware.SessionAware.ApplicationAware接口来访问Map类型的request.session.application对象(IoC方式). 通过ServletActionContext来访问Servlet API类型的HttpServletRequest. HttpSession. Serv

Struts2 Web 资源获取的四种方式

Struts2 Web 资源获取一个有四种方式,两个大类 拦截器获取 Web 资源模式 静态对象获取 Web 资源模式 第一种:实现ServletRequestAware.ServletResponseAware.ServletContextAware接口 struts.xml <action name="FirstAction" class="Action.FirstAction"> <result name="success"

Struts2访问Servlet API的几种方式

struts2提供了三种方式访问servlet API:大致分为两类 1. ActionContext: public static ActionContext getContext() :获得当前Action的ActionContext实例. public Object get(Object key) :此方法类似于调用HttpServletRequest的getAttribute(String name)方法. public void put(Object key, Object value

让外部网络访问K8S service的四种方式

本文基于kubernetes 1.5.2版本编写 kube-proxy+ClusterIP kubernetes版本大于或者等于1.2时,配置: 修改master的/etc/kubernetes/proxy,把KUBE_PROXY_ARGS=""改为KUBE_PROXY_ARGS="–proxy-mode=userspace"重启kube-proxy服务在核心路由设备或者源主机上添加一条路由,访问cluster IP段的路由指向到master上. kubernete

Action中取得request,session的四种方式

在Struts2中,从Action中取得request,session的对象进行应用是开发中的必需步骤,那么如何从Action中取得这些对象呢?Struts2为我们提供了四种方式.分别为servlet 不相关的 非IoC 取得Request等对象的方式servlet 不相关的 IoC 取得Request等对象的方式servlet 相关的 非IoC 取得Request等对象的方式servlet 相关的 IoC 取得Request等对象的方式以下分别叙述. 首先请看struts.xml文件文件内容:

struts2获取request、session、application的四种方式

//获取map类型的request.session.application public class LoginAction1 extendsActionSupport { private Map request; private Map session; private Map application; publicLoginAction1() { request= (Map)ActionContext.getContext().get("request"); session= Ac

.net core 2.x - 缓存的四种方式

其实这些微软docs都有现成的,但是现在的人想对浮躁些,去看的不会太多,所以这里就再记录下 ,大家一起懒一起浮躁,呵呵. 0.基础知识 通过减少生成内容所需的工作,缓存可以显著提高应用的性能和可伸缩性. 缓存对不经常更改的数据效果最佳. 缓存生成的数据副本的返回速度可以比从原始源返回更快. 在编写并测试应用时,应避免依赖缓存的数据.ASP.NET Core 支持多种不同的缓存. 最简单的缓存基于 IMemoryCache,它表示存储在 Web 服务器内存中的缓存. 在包含多个服务器的服务器场上运

Android中多线程的使用四种方式最全总结

当我们启动一个App的时候,Android系统会启动一个Linux Process,该Process包含一个Thread,称为UI Thread或Main Thread.通常一个应用的所有组件都运行在这一个Process中,当然,你可以通过修改四大组件在Manifest.xml中的代码块(<activity><service><provider><receiver>)中的android:process属性指定其运行在不同的process中.当一个组件在启动的

java创建对象的四种方式

java程序中对象的创建有四种方式: ● 调用new语句创建对象,最常见的一种 ● 运用反射手段创建对象,调用java.lang.Class 或者 java.lang.reflect.Constructor 类的newInstance()实例方法 ● 调用对象的clone()方法 ● 运用序列化手段,调用java.io.ObjectInputStream 对象的 readObject()方法. 下面分别实例讲述 一.new语句创建 ?// 使用java语言的关键字 new 创建对象,初始化对象数