0

リクエストの値に基づいて、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>

だから、chooseLang が 'NL' 属性を見つけることを知っています。タグと タグの間を変更すると <c:out value="Test" />、ページにテストが記載されていることがわかります。他の言語の場合は、同様に変更されます..

ただし、次のように、Localization.jsp ファイルの 1 つで定義されている文字列を使用しようとすると、実際のエラーが発生します。

<%
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">

それで、私はここで何が欠けていますか?または、これは別の方法でより便利に行われますか?

前もって感謝します!

4

1 に答える 1

1

ResourceBundleを見てみてください。これにより、1 つの JSP ファイルを作成するだけで、ページ上のすべての文言がプロパティ ファイルで制御されます。これにより、jsp ファイルにロジックを記述して言語を制御する必要がなくなります。

JSP ページは、プロパティ ファイルから読み取ることができます。各ファイルには、さまざまな言語/国向けの文言が含まれています。

ResourceBundle の使用方法に関するチュートリアルはたくさんあります。これはオラクルからのものです

于 2010-11-09T13:56:09.240 に答える