1、struts国际化配置
*在struts-config.xml文件中加入
2、提供国际化资源文件
* MessageResources.properties
* MessageResources_zh_CN.properties
* MessageResources_en_US.properties
中文需要转换成Unicode编码(native2ascii.exe)
3.在jsp中采用<bean:message>读取国际化消息文本
4.利用struts默认将Locale放到session中的特性,我们可以完成语言的自动切换
5.动态消息国际化的主要三个步骤:
*创建国际化消息文本
*传递国际化消息文本
*显示国际化消息文本
如何创建国际化消息文本
理解ActionMessage和ActionMessages连个对象的区别
如何传递国际化消息文本
调用savaMessage()传递提示消息,调用savaError()传递错误消息
如何显示国际化消息文本
通过<html:messages>显示提示消息和错误消息
通过<html:errors>显示错误消息(只能显示错误消息)
*如果需要特效则在国际化资源文件中加入
*在struts-config.xml文件中加入
<message-resources parameter="MessageResources" />
2、提供国际化资源文件
* MessageResources.properties
* MessageResources_zh_CN.properties
login.form.field.Password=\u5BC6\u7801
login.form.button.login=\u767B\u5F55
login.form.field.username=\u7528\u6237
* MessageResources_en_US.properties
中文需要转换成Unicode编码(native2ascii.exe)
3.在jsp中采用<bean:message>读取国际化消息文本
<form action="login.do" method="post">
<bean:message key="login.form.field.username"/>:<input type="text" name="username"><br>
<bean:message key="login.form.field.Password"/>:<input type="password" name="password" ><br>
<input type="submit" value="<bean:message key="login.form.button.login"/>">
</form>
4.利用struts默认将Locale放到session中的特性,我们可以完成语言的自动切换
*ChangeLanguageAction.java
//.......................................
String lang = request.getParameter("lang");
Locale locale = Locale.getDefault();
if("zh".equals(lang)){
locale = new Locale("zh", "CN");
}else if("en".equals(lang)){
locale = new Locale("en", "US");
}
//将Locale设置到session中
// request.getSession().setAttribute(Globals.LOCALE_KEY, locale);
this.setLocale(request, locale);
return mapping.findForward("index");
//.................................
5.动态消息国际化的主要三个步骤:
*创建国际化消息文本
*传递国际化消息文本
*显示国际化消息文本
如何创建国际化消息文本
理解ActionMessage和ActionMessages连个对象的区别
如何传递国际化消息文本
调用savaMessage()传递提示消息,调用savaError()传递错误消息
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
/**
* 登录Action
* 负责取得表单数据,调用业务逻辑,返回转向信息
* @author Administrator
*
*/
public class LoginAction extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
// LoginActionForm laf = (LoginActionForm)form;
// String username = laf.getUsername();
// String password = laf.getPassword();
// if("admin".equals(username) && "admin".equals(password)){
// //登录成功
// return mapping.findForward("success");
// }else{
// //登录失败
// return mapping.findForward("error");
// }
LoginActionForm laf = (LoginActionForm)form;
String username = laf.getUsername();
String password = laf.getPassword();
UserManager userManager = new UserManager();
ActionMessages messages = new ActionMessages();
try{
userManager.login(username, password);
//创建国际化消息
ActionMessage message = new ActionMessage("login.success",username);
messages.add("login_success_1",message);
//传递国际化消息
this.saveMessages(request, messages);
return mapping.findForward("success");
}catch(UserNotFoundException e){
e.printStackTrace();
//创建国际化消息
ActionMessage error = new ActionMessage("login.user.not.found", username);
messages.add("error_1",error);
// 传递国际化消息
this.saveErrors(request, messages);
}catch(PasswordErrorException e){
e.printStackTrace();
ActionMessage error = new ActionMessage("login.password.error");
messages.add("error_2",error);
this.saveErrors(request, messages);
}
return mapping.findForward("error");
}
}
如何显示国际化消息文本
通过<html:messages>显示提示消息和错误消息
通过<html:errors>显示错误消息(只能显示错误消息)
*如果需要特效则在国际化资源文件中加入
errors.header=<UL>
errors.prefix=<font color=red><LI>
errors.suffix=</LI></font>