2010-11-09 2 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» , потому что, когда я меняю whats между тегами и тегами на , он работает, я вижу, что тест упоминается на моей странице, и когда я добавляю 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

Это домашнее задание? Просто, чтобы быть уверенным, потому что это совершенно неправильный подход для i18n в JSP. – BalusC

+0

согласен еще 9 ... –

ответ

1

Посмотрите на ResourceBundle. Это позволит вам написать 1 JSP-файл, и все формулировки на странице будут контролироваться в файлах свойств. Это позволит избежать необходимости писать логику в файле jsp для управления языком.

Ваша страница JSP может считываться из файлов свойств, каждая из которых будет содержать ваши формулировки для разных языков/стран.

Существует множество учебников о том, как использовать ResourceBundle. Вот один из Oracle

+0

Спасибо! Я буду использовать это с этого момента, это прекрасно! – Craimasjien

Смежные вопросы