Struts编码国际化
1. struts国际化的配置
*在struts-config.xml文件中加入:
<message-resources parameter="MessageResources" />
2. 提供不同版本的国际化资源文件,中文需要采用nativeascii转换成unicode
3. 在jsp中采用<bean:message>标签来读取国际化消息文本
4. 了解利用struts默认将locale放到session中的特性,完成采用编程的方式切换语言设置
5. 消息文本的国际化,共有三个步骤:
*创建国际化消息
*传递国际化消息
*显示国际化消息
如何创建国际化消息
理解ActionMessage和ActionMessages两个对象的区别
如何传递国际化消息?
调用saveMessage()传递普通消息,调用saveErrors传递错误消息
如何显示国际化消息?
*通过<html:messages>标签显示消息(可以显示普通消息和错误消息)
*通过<html:errors>显示消息(只能显示错误消息)
一个实例:
在此MessageResources_zh_CN.properties配置文件中内容如下:
user.title=/u7528/u6237/u767b/u9646
user.username=/u7528/u6237
user.password=/u5bc6/u7801
user.button.login=/u767b/u9646
在此MessageResources_en_US.properties配置文件中内容如下:
user.title=User Login
user.username=User Name
user.password=Password
user.button.login=Login
在此MessageResources.properties(即缺省文件)配置文件中内容如下:
user.title=User Login
user.username=User Name
user.password=Password
user.button.login=Login
在jsp页面引入向的标签
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
实例:
<html>
<head>
<title><bean:message key="user.title"/></title>
</head>
<body>
<h1><bean:message key="user.username"/></h1>
<hr>
<form action="user.do" method="post">
<bean:message key="user.username"/>:<input type="text" name="username" value="${userform.username}" ><br>
<bean:message key="user.password"/>:<input type="password" name="password" value="${userform.password}"><br>
<input type="submit" value="<bean:message key="user.button.login"/>">
</form>
</body>
</html>
了解利用struts默认将locale放到session中的特性,完成采用编程的方式切换语言设置
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
String lang = request.getParameter("lang");
//获取当前Locale
Locale currenLocale = Locale.getDefault();
if("zh".equals(lang)){
currenLocale = new Locale("zh","CN");
}else if("en".equals(lang)){
currenLocale = new Locale("en","US");
}
//获取session request.getSession().setAttribute(Globals.LOCALE_KEY, currenLocale);
return mapping.findForward("index");
}
消息文本国际化的小例子:
//1.创建国际化消息文本
ActionMessage message = new ActionMessage("user.not.found",username);
messages.add("error1",message);
//2.传递国际化消息文本
this.saveErrors(request, messages);
return mapping.findForward("error");
//3.显示国际化消息
<html:messages id="error" property="error1">
<bean:write name="error"/>
</html:messages>