struts国际化,从资源文件读取异常信息
示例演示登录时从资源文件读取用户名或密码错误信息
logon.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%><%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %><%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html:html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>logon</title></head><body><html:form action="logon"><table border="0" width="100%"><tr><th align="right"><bean:message key="login.user"/></th><td align="left"><html:text property="username" size="20" maxlength="20"></html:text></td></tr><tr><th align="right"><bean:message key="login.pwd"/></th><td align="left"><html:password property="password" size="20" maxlength="20"></html:password></td></tr><tr><td align="right"><html:submit>logonin</html:submit></td><td align="left"><html:button property="register" >register</html:button><html:reset>reset</html:reset></td></tr></table></html:form></body></html:html>
?
action
?
package com.lwf.struts.action;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;import com.lwf.struts.form.LogonForm;public class LogonAction extends Action {public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception {LogonForm logonForm = (LogonForm)form;String name = logonForm.getUsername();String pwd = logonForm.getPassword();ActionMessages errors = new ActionMessages();ActionForward forward = new ActionForward();if(pwd !=null && !pwd.equals("admin")){errors.add("logon", new ActionMessage("error.login.user"));}if(errors.size()<1){request.getSession().setAttribute("user", logonForm);forward = mapping.findForward("success");}else{saveErrors(request, errors);forward = mapping.findForward("error");}return forward;}}?
?
配置文件:
<action path="/logon" type="com.lwf.struts.action.LogonAction"name="logonForm" input="/index.jsp" scope="session" validate="true" /><form-bean name="logonForm" type="com.lwf.struts.form.LogonForm"></form-bean>
?
?
资源文件:
ApplicationResources.properties
error.login.user= user or password is not correct
?
ApplicationResources_zh_CN.txt
?
error.login.user= 用户或密码不正确
?转化后的内容:
ApplicationResources_zh_CN.properties
error.login.user= \u7528\u6237\u6216\u5bc6\u7801\u4e0d\u6b63\u786e
?
ApplicationResources_en_US.properties
error.login.user= user or password is not correct
?
下面页面可供客户更改语言
changLang.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@include file="share/html_head_taglib.jspf" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><form action="changLangAction.do"><input type="radio" name="lang" value="zh"/>中文 <input type="radio" name="lang" value="en"/>英文<br><input type="submit" value="submit"/></form></body></html>
?
package com.lwf.struts.action;import java.util.Locale;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts.Globals;import org.apache.struts.action.Action;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;public class ChangLangAction extends Action {public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception {String lang = request.getParameter("lang");lang = (lang == null) ? "" : lang.trim();Locale locale = null;if(lang.equals("zh")){locale = new Locale("zh","cn");}else{locale = new Locale("en","us");}this.setLocale(request, locale);//request.getSession().setAttribute(Globals.LOCALE_KEY, locale);return mapping.findForward("success");}}?