jsp - 在 JSP 页面中动态导入文件

标签 jsp tomcat jspinclude

我希望我的 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 个值时,一个用于 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">

那么,我在这里缺少什么? 还是用另一种方式更方便?

提前致谢!

最佳答案

尝试查看 ResourceBundle .这将允许您做的是编写 1 个 JSP 文件,页面上的所有文字都将在属性文件中进行控制。这将避免您必须在 jsp 文件中编写逻辑来控制语言。

您的 JSP 页面可以从属性文件中读取,每个属性文件都有您针对不同语言/国家/地区的措辞。

有很多关于如何使用 ResourceBundle 的教程。这是来自 Oracle 的一个

关于jsp - 在 JSP 页面中动态导入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4134236/

相关文章:

java - JAXB 列表解码不显示完整列表,而仅显示最后一个对象

css - 调用转发到 JSP 的 Servlet 时,浏览器无法访问/查找相关资源,如 CSS、图像和链接

java - 覆盖 javax.servlet.Servlet.getServletInfo() 有什么用?

java - org.springframework.beans.factory.BeanCreationException : Error creating bean with name 'XXX'

java - 从 JSP include 返回 500 错误

java - jsp:页面导入导致语法错误

java - JSP/Java/HTML | JSP out.println();在方法中打印到控制台

java - 从 jsp 页面打印到打印机。使用按钮从数据库检索数据并打印

tomcat - 控制 session 的过期

java - 为什么别名模型对象无法从 jsp include 访问?