我是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上找到一些解决方案,我上面发布的内容就是我设法来的:(
答案 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
使用资源包