Динамический импорт файла на странице JSP - PullRequest
0 голосов
/ 09 ноября 2010

Я хочу, чтобы моя страница 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>

Итак, я знаю, что selectedLang находит атрибут 'NL', потому что, когда я изменяю значение между тегами и на <c:out value="Test" />, оно работает, я вижу, что тест упоминается на моей странице, и когда я помещаю туда 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 Ответ

1 голос
/ 09 ноября 2010

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

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

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

...