【问题标题】:Loading values from properties file into jsp without using scriplets inside JSP page将属性文件中的值加载到 jsp 中,而不使用 JSP 页面中的脚本
【发布时间】:2017-10-26 05:10:22
【问题描述】:

我需要从属性中读取值,并且该值将显示在我的 JSP 页面上。 我通过在 JSP 页面中添加 java 代码来执行此操作,如下所示:

<%@page import="java.io.InputStream" %>
<%@page import="java.util.Properties" %>

<%
    InputStream stream = application.getResourceAsStream("etc/appconfigweb.properties");
    Properties props = new Properties();
    props.load(stream);
    String env = props.getString("environment");
%>
    <% env %>

现在我想将属性文件值加载到 JSP 页面中,而不将 java 代码放入 JSP 中。有没有将值加载到 JSP 中的方法。

【问题讨论】:

  • 为什么不将值设置为来自 servlet 的属性,然后使用 JSP 中的括号表示法访问它 - 例如${env}

标签: java spring jsp servlets web


【解决方案1】:

您可以使用 jstl 标签库在您的 jsp 页面上加载属性,请确保您的属性文件位置应为WEB-INF\classes\etc\

<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
<%@ taglib uri = "http://java.sun.com/jsp/jstl/fmt" prefix = "fmt" %>
....
....
  <fmt:setLocale value = "en"/>
  <fmt:setBundle basename = "etc.appconfigweb" var = "lang"/>
  <fmt:message key = "environment" bundle = "${lang}"/>

Example of jstl for reading Property file

【讨论】:

  • 我的项目需要我将属性文件放在类路径之外。是否可以使用上述方法将外部类路径中的值加载到jsp中。
  • ???环境???正在显示,因为否则您的属性文件未退出,请清理您的项目并构建它。并再次运行。我觉得它应该可以工作。
  • K 很抱歉我的错误。我会再试一次。
【解决方案2】:

您可以使用 JSTL 和 标签来做到这一点,如下所示:

<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
<%@ taglib uri = "http://java.sun.com/jsp/jstl/fmt" prefix = "fmt" %>
....
....
<fmt:bundle basename = "etc.appconfigweb">
     <fmt:message key = "environment"/><br/>
</fmt:bundle>

欲了解更多信息,请参阅JSTL example

【讨论】:

  • 当我尝试这个时,我得到的输出是???environment???不是环境的价值。
  • 对此感到抱歉,请查看我的更新答案。基本上从基本名称中删除 .properties 并且文件夹分隔符必须是 (.)
  • 您的应用程序中的文件夹/文件“etc/appcoinfigweb.properties”中是否有类似“environment=something”的内容?当我在我的机器上执行此操作时,它可以正常工作...
  • 是的,我里面有 appconfigweb.properties 等等。但我得到了同样的错误。
  • 你能确定你的财产文件的位置吗? , 它应该在 web-inf/classess
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-20
  • 2014-01-19
  • 2013-11-15
  • 1970-01-01
  • 1970-01-01
  • 2016-07-17
  • 2012-09-12
相关资源
最近更新 更多