我有一個web應用程序。爲了多語言的目的,我使用了帶有MessageResources
的java struts 1.3。默認語言是italian
(MessageResources.properties
),第二種語言是english
(MessageResources_en.properties
)。MessageResources怪異行爲
struts-config.xml
:
<!--Message Resources -->
<message-resources parameter="MessageResources" />
在我index.jsp
:
<% String language = request.getLocale().getLanguage(); %>
var lang = '<%=language%>';
<script type="text/javascript" src="js/language.js"></script>
js/language.js
:
$(document).ready(function() {
var browser = null;
var val = navigator.userAgent.toLowerCase();
if(val.indexOf("firefox") > -1) browser = 'FIREFOX';
else if(val.indexOf("msie") > -1) browser = 'IE';
else if(val.indexOf("chrome") > -1) browser = 'CHROME';
$.ajax({
url:"SetDefaultLanguage.do",
data: "isolingua="+lang+"&browser="+browser+"&val="+val,
success: function (response) {}
});
});
在SetDefaultLanguage.java
:
//parametro del browser
if(request.getParameter("isolingua") != null)
{
isolingua = request.getParameter("isolingua");
switch (isolingua)
{
case "en":
request.getSession().setAttribute("lingua", 2);
Locale.setDefault(Locale.ENGLISH);
request.getSession().setAttribute(Globals.LOCALE_KEY, Locale.ENGLISH);
System.out.println("CASE EN: "+Locale.getDefault()+" - "+request.getSession().getAttribute(Globals.LOCALE_KEY));
break;
case "it":
request.getSession().setAttribute("lingua", 1);
Locale.setDefault(Locale.ITALIAN);
request.getSession().setAttribute(Globals.LOCALE_KEY, Locale.ITALIAN);
System.out.println("CASE IT: "+Locale.getDefault()+" - "+request.getSession().getAttribute(Globals.LOCALE_KEY));
break;
default:
request.getSession().setAttribute("lingua", 1);
Locale.setDefault(Locale.ITALIAN);
request.getSession().setAttribute(Globals.LOCALE_KEY, Locale.ITALIAN);
System.out.println("CASE DEFAULT: "+Locale.getDefault()+" - "+request.getSession().getAttribute(Globals.LOCALE_KEY));
break;
}
}
設置爲瀏覽器語言「意大利」它打印總是情況下:它 - 它 但在這裏它是奇怪的現象:我的索引,登記或找回密碼頁面可以
- 所有意大利
- 索引和檢索密碼,意大利和註冊的英文
- 都在意大利,只是當我重新啓動Tomcat它重新顯示在意大利的所有頁面檢索英文
- ... 密碼和註冊的一些話
其它信息:
- 的應用程序的登錄之後似乎是從這個奇怪的問題
- 的應用程序在虛擬服務器託管與英文操作系統
- 安全當我嘗試應用在我的本地PC上(使用意大利語操作系統),不會發生此問題
request.getSession().setAttribute("lingua", <int>)
用於servlet以正確的語言將信息檢索到數據庫中;這一直工作正常
謝謝大家
Unfortunatey後與你的建議良好的行爲幾天,我重新部署了我應用程序,我又遇到了同樣的問題(部署+ Tomcat重啓)。 – Nogothwen 2014-10-30 12:48:48
你在Tomcat上是否部署了其他應用程序? – 2014-10-30 12:56:54
是的我有一個演示版本。 – Nogothwen 2014-10-30 15:46:14