首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Eclipse IDE Maven Spring 4 Java Web项目中使用JSTL fmt:message

在Eclipse IDE Maven Spring 4 Java Web项目中使用JSTL fmt:message
EN

Stack Overflow用户
提问于 2018-09-02 10:48:42
回答 1查看 296关注 0票数 1

我用谷歌搜索了以下问题,但我找不到答案。它们是相互关联的,所以我将它们放在一个帖子中。我是一名Java后端开发人员,使用Eclipse IDE,在Maven Spring4Java项目中使用JSTL fmt:message标记。

问题#1:

如果你有一个jsp文件,其中包含另一个jsp文件,那么fmt标记库放在哪里呢?

问题#2:

fmt:setBundle标记可以有一个嵌套的fmt:message标记吗?

问题#3:

message.properties文件必须放在哪里才能与fmt:setBundle标记一起使用?

EN

回答 1

Stack Overflow用户

发布于 2018-09-20 04:47:42

答案#1:

如果要将fmt:message与fmt:setBundle和fmt:setLocale一起使用,则需要fmt标记库。我相信这是显而易见的。但是,另外,如果您有一个jsp文件,其中包含另一个使用jsp:includes标记的jsp文件,并且包含的文件是包含fmt标记的文件,那么fmt标记库将进入包含的文件,而不是包装文件。

 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>

答案#2:

我无法让下面的代码正常工作。Eclipse说fmt:setBundle标记必须为空。但是,我确实在web上看到了一些示例,它们将fmt:message标记嵌套在open和close fmt:setBundle标记中。

<fmt:setBundle basename="message">
   <fmt:message key="name"/>
</fmt:setBundle>

请参阅:https://www.baeldung.com/jstl

我能够让下面的代码正常工作。

<fmt:setLocale value="en_US" />
<fmt:setBundle basename="com.studypartner.properties.message" var="lang"/> // approach #1
<h1><fmt:message key="name" bundle="${lang}" /></h1>
<fmt:setBundle basename="message" var="lang"/> // approach #2
<h1><fmt:message key="name" bundle="${lang}" /></h1>

要使此代码i18n,您可以从language_COUNTRY代码列表中将语言环境设置为您想要的任何值,如果您有匹配的属性文件,上面的代码将把键"name“的值打印到页面。例如,我创建了一个名为"message_en_US.properties“的属性文件。由于我将语言环境设置为"en_US",并且基本名称的末尾是"message",因此将找到我拥有的属性文件,并且此文件中与fmt:message标记匹配的关键字"name“将在上面的标记中结束。上面标签中关于"lang“的部分似乎是将捆绑包链接到消息所必需的。

请参阅:https://www.tutorialspoint.com/jsp/jstl_format_message_tag.htm

以下是语言和国家/地区代码的列表:

https://docs.oracle.com/cd/E13214_01/wli/docs92/xref/xqisocodes.html

答案#3:

好的,再看一下答案#2中“方法#1”和“方法#2”的代码。为什么我要重复它?我想证明这两种方法都是可行的。将属性文件放在正确的位置似乎很重要。然而,在Maven Spring3Java web项目中,您可以将其放置在一些令人惊讶的位置,并且它将适用于其中任何一个位置。请查看以下链接中的项目设置:

project setup

首先,如果您没有message_en_US.properties文件,但是有一个message.properties文件,那么fmt:setBundle标记仍然有效。同样,你可以把你的属性文件放在3个不同的地方,它仍然可以工作。

a) src/main/java > com.studypartner.properties

b) src/main/resources > com > studypartner > properties

c) src/main/resources

"a“和"b”适用于

"c“适用于

当然,您可以将"com.studypartner.properties“替换为您自己的包名(a,b)或嵌套文件夹的名称(c)。

基本上,当他们说属性文件必须在您的“类路径”上时,这就是他们的意思。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52133594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档