2010-11-09 50 views
0

我希望我的JSP頁面根據請求中的值包含另一個頁面。 所以我設置如下:動態導入JSP頁面中的文件

request.setAttribute("chosenLang", "NL"); 
    RequestDispatcher dispatcher = request.getRequestDispatcher(address); 
    dispatcher.forward(request, response); 

當我到達「地址」頁面我儘量做到以下幾點:

<c:choose> 
    <c:when test="${chosenLang eq 'NL'}"> 
     <%@include file="/Localization/NL_Localization.jsp" %> 
    </c:when> 
    <c:otherwise> 
     <%@include file="/Localization/EN_Localization.jsp" %> 
    </c:otherwise> 
</c:choose> 

所以,我知道chosenLang發現「NL」屬性,因爲當我改變和標籤之間的什麼到它的作品,我看到測試得到在我的網頁上提及,當我把2個值在那裏,一個用於NL和一個用於其他語言,它也改變了..

雖然真正的錯誤,當我嘗試使用該公司在Localization.jsp文件中的一個定義,像這樣的字符串:

<% 
String welcomeStr="this is defining String variable"; 
%> 

而當我把這個字符串的地方倒在我的網頁像

<%=welcomeStr%> 

我的IDE犯規警告我說,有什麼東西錯誤。但是,當我編譯和運行我得到以下錯誤:

org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: 48 in the jsp file: /index3.jsp 
welcomeStr cannot be resolved 
45:      <li>My courses</li> 
46:      <li>My messages [1]</li> 
47:      <li>My details</li> 
48:      <li> <%=welcomeStr%></li> 
49:     </ul> 
50:    </div> 
51:    <div id="menuHolder"> 

所以,我在這裏失蹤? 或者用另一種方式做得更方便嗎?

在此先感謝!

+1

這是功課嗎?只是爲了確定,因爲這對於JSP中的i18n來說是完全錯誤的方法。 – BalusC 2010-11-09 13:46:31

+0

同意9更多去.. – 2010-11-09 13:47:26

回答

1

試試看ResourceBundle。這將允許您執行的操作是編寫1個JSP文件,並且頁面上的所有文字都將在屬性文件中進行控制。這將避免你必須在你的jsp文件中編寫邏輯來控制語言。

您的JSP頁面可以從屬性文件中讀取,其中每個屬性文件都會有您的用於不同語言/國家的文字。

有很多關於如何使用ResourceBundle的教程。這裏有一個來自Oracle

+0

謝謝!我將從現在開始使用它,這是完美的! – Craimasjien 2010-11-11 08:43:25