1、struts國際化的配置
 * 在struts-config.xml文件中加入:<message-resources parameter="MessageResources" />
 
2、提供不同版本的國際化資源文件,中文需要采用native2ascii轉換成unicode

3、在jsp中采用<bean:message>標簽來讀取國際化消息文本

4、了解利用struts默認將locale放到session中的特性,完成采用編程的方式切換語言設置
 * 參見:ChangeLanguageAction.java
 
5、消息文本的國際化處理,共有三個步驟:
 * 創建國際化消息
 * 傳遞國際化消息
 * 顯示國際化消息
 
如何創建國際化消息?
 理解ActionMessage和ActionMessages兩個對象的區別
 
如何傳遞國際化消息?
 * 調用saveMessage()傳遞普通消息,調用saveErrors傳遞錯誤消息
 
如何顯示國際化消息?
 通過<html:messages>標簽顯示消息(可以顯示普通消息和錯誤消息)
 通過<html:errors>顯示消息(只能顯示錯誤消息) 

當將國際化資源文件放入到一個包時,在struts-config.xml文件中加入:<message-resources parameter="包名.MessageResources" />

ChangeLanguageAction.java

 1import java.util.Locale;
 2
 3import javax.servlet.http.HttpServletRequest;
 4import javax.servlet.http.HttpServletResponse;
 5
 6import org.apache.struts.Globals;
 7import org.apache.struts.action.Action;
 8import org.apache.struts.action.ActionForm;
 9import org.apache.struts.action.ActionForward;
10import org.apache.struts.action.ActionMapping;
11
12public class ChangeLanguageAction extends Action {
13
14    @Override
15    public ActionForward execute(ActionMapping mapping, ActionForm form,
16            HttpServletRequest request, HttpServletResponse response)
17            throws Exception {
18        String lang = request.getParameter("lang");
19        
20        Locale currentLocale = Locale.getDefault(); 
21        if ("zh".equals(lang)) {
22            currentLocale = new Locale("zh""CN");
23        }
else if("en".equals(lang)) {
24            currentLocale = new Locale("en""US");
25        }

26        //request.getSession().setAttribute(Globals.LOCALE_KEY, currentLocale);
27        
28        this.setLocale(request, currentLocale);
29        return mapping.findForward("index");
30    }

31
32}