質問

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」属性を見つけることを知っています。 <c:out value="Test" /> それは動作します、私は私のページでテストが言及されているのを見ます、そして、私がそこに2つの値をそこに置くと、1つはNL用、もう1つは他の言語用に、それは同じように変わります。

ただし、実際のエラーは、locialization.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">

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

前もって感謝します!

役に立ちましたか?

解決

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

JSPページはプロパティファイルから読み取ることができ、それぞれに異なる言語/国の文言があります。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top