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
1
import java.util.Locale;
2
3
import javax.servlet.http.HttpServletRequest;
4
import javax.servlet.http.HttpServletResponse;
5
6
import org.apache.struts.Globals;
7
import org.apache.struts.action.Action;
8
import org.apache.struts.action.ActionForm;
9
import org.apache.struts.action.ActionForward;
10
import org.apache.struts.action.ActionMapping;
11
12
public 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
}

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

謝謝指教