在19、struts国际化自动切换的基础上进行此实例
<1>消息文本的国际化处理,共有三个步骤:
* 创建国际化消息
* 传递国际化消息
* 显示国际化消息
<2>如何创建国际化消息?
理解ActionMessage和ActionMessages两个对象的区别
<3>如何传递国际化消息?
* 调用saveMessage()传递普通消息,调用saveErrors传递错误消息
<4>如何显示国际化消息?
通过<html:messages>标签显示消息(可以显示普通消息和错误消息)
通过<html:errors>显示消息(只能显示错误消息)
1、LoginAction.java

Code
package com.bjsxt.struts;
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 {
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();
ActionMessages messages = new ActionMessages();
try {
UserManager.getInstance().login(username, password);
//创建国际化消息文本
ActionMessage message = new ActionMessage("user.login.success", username);
//ActionMessage message = new ActionMessage("user.login.success", new Object[]{username});
messages.add("loginSuccess1", message);
ActionMessage message1 = new ActionMessage("user.login.success", username);
messages.add("loginSuccess2", message1);
//传递国际化消息文本,可以保存在session也可以保存在request
this.saveMessages(request, messages);
return mapping.findForward("success");
}catch(UserNotFoundException unfe) {
unfe.printStackTrace();
//创建国际化消息文本,错误消息
ActionMessage message = new ActionMessage("user.not.found", username);
messages.add("error1", message);
//传递国际化消息文本,使用saveErrors方法,是为了区分那些是错误消息
this.saveErrors(request, messages);
}catch(PasswordErrorException pee) {
pee.printStackTrace();
//创建国际化消息文本
ActionMessage message = new ActionMessage("user.password.error");
messages.add("error2", message);
//传递国际化消息文本
this.saveErrors(request, messages);
}
return mapping.findForward("error");
}
}
2、login_success.jsp使用struts的html标签来输出

Code
<body>
<!-- 相当于循环标签,每次读出的值放在msg中,默认是读取错误消息上面的内容(saveErrors传递值)
如果要读取(saveMessages传递的值),property属性表示只显示对应LoginAction.java中loginSuccess1
对应的值
-->
<html:messages id="msg" message="true" property="loginSuccess1">
<bean:write name="msg"/>
</html:messages>
</body>3、login_error.jsp中读取错误消息
<font color="red">
<li>
<html:messages id="msg" property="error1">
<bean:write name="msg"/>
</html:messages>
</li>
</font>
4、下面介绍一个标签,只能读取错误消息
<html:errors property="error1"/>
它会使用MessageResource_**_**.properties中如下代码控制输出风格
# -- standard errors --
errors.header=<UL>
errors.prefix=<LI><font color="red">
errors.suffix=</font></LI>
errors.footer=</UL>