Question

Je veux que ma page JSP pour inclure une autre page basée sur une valeur dans la demande. Donc je configurer les paramètres suivants:

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

Et quand je reçois à la page « adresse » je tente de faire ce qui suit:

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

Alors, je sais que le chosenLang trouve l'attribut « NL », parce que quand je change ce qui est entre les balises et à <c:out value="Test" /> cela fonctionne, je vois le test se mentionné sur ma page, et quand je mets 2 valeurs là-dedans, un pour NL et un pour une autre langue, il change aswell ..

La vraie erreur cependant, vient quand je tente d'utiliser une chaîne qui est définie dans l'un des fichiers Localization.jsp, comme ceci:

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

Et quand je l'appelle que quelque part chaîne dans ma page comme

 <%=welcomeStr%>

mon IDE ne marche pas me avertir qu'il ya quelque chose de mal. Mais quand je compiler et exécuter je reçois l'erreur suivante:

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

Alors, qu'est-ce que je manque ici? Ou est-ce fait plus pratique d'une autre manière?

Merci à l'avance!

Était-ce utile?

La solution

Essayez de regarder ResourceBundle . Qu'est-ce que cela vous permettra de faire est un fichier écrire 1 JSP, et tout le texte sur la page sera contrôlé dans les fichiers de propriété. Cela vous évitera d'avoir à la logique d'écriture dans votre fichier jsp pour contrôler la langue.

Votre page JSP peut lire des fichiers de propriété, dont chacun aura votre libellé pour différentes langues / pays.

Il y a beaucoup de tutoriels là-bas sur la façon d'utiliser ResourceBundle. Voici un de Oracle

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top