欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

struts国际化,从资源文件读取异常信息

程序员文章站 2022-05-24 11:08:13
...

示例演示登录时从资源文件读取用户名或密码错误信息

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"/>中文&nbsp;<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");
	}

}