子文件夹中的资源包

时间:2014-10-03 07:34:29

标签: jsp

我是JSP的新手,试图实现资源包将所有标签放在我的jsp页面上。这就是我得到的。

我将此文件labels.properties放入WEB-INF/classes

greeting=Hello!

并将其放入我的 .jsp 页面:

<fmt:setBundle basename="labels" var="labels" scope="application"/>
<fmt:message key="greeting" bundle="${ labels }"/>

我在页面上看到Hello!,一切都很好。但是如果我想将它放入资源文件夹呢?说我想要这个结构resources/bundles/labels.properties。我试图将setBundle改为:

<fmt:setBundle basename="resources.bundles.labels" var="labels" scope="application"/>

但它没有用。我也尝试将它添加到我的web.xml中,这对任何一个都没有帮助:

<context-param>
    <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
    <param-value>resources.bundles.labels</param-value>
</context-param>

我想我错过了什么。我的资源文件夹在Java Build Path中,但我仍然无法将任何文件作为资源包挂钩。对不起,如果这是一件简单而愚蠢的事情,我真的试图在这里和Google上找到一些解决方案,我上面发布的内容就是我设法来的:(

2 个答案:

答案 0 :(得分:1)

您说资源文件夹位于 build 类路径中,但您需要的是构建过程将其置于/WEB-INF/classpath下。使用maven时,表示您拥有/src/main/resources/resources/bundle

或者,这可能是一个难以移植的解决方案,将您的resources文件夹放在容器的类路径中(tomcat,jetty或您使用的任何内容......)

答案 1 :(得分:0)

不,你无法获得类路径之外的值。

引自BalusC回答,

  

它必须进入类路径。它们在ResourceBundle加载的封面下,默认情况下从类路径加载它们。因此,将它放在classpath之外是不行的。您始终可以将它们放在(子)包中,如/WEB-INF/classes/local/filename.properties。然后,您应该只使用basename local.filename而不是filename来访问它。

因此最好在WEB-INF/classes中创建子文件夹。在这里阅读Discussion

Learn More通过jstl

使用资源包