Properties 从JSTL读取属性文件

Properties 从JSTL读取属性文件,properties,jstl,taglib,Properties,Jstl,Taglib,我试图使用taglib读取一个“属性文件”表单JSTL,但我无法访问它 <%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt"%> 而不是属性文件中的消息 我认为问题在于定位属性文件, 或者在中的基名称中 <fmt:bundle basename="msg"> 我应该在哪里找到属性文件,如何在代码中引用它 谢谢大家试试看 < fmt:bundle basename="msg"/>

我试图使用taglib读取一个“属性文件”表单JSTL,但我无法访问它

<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt"%> 
而不是属性文件中的消息

我认为问题在于定位属性文件, 或者在中的基名称中

<fmt:bundle basename="msg">

我应该在哪里找到属性文件,如何在代码中引用它

谢谢大家

试试看

   < fmt:bundle basename="msg"/>
   < fmt:message key="error.more" />
当您修复taglib URL时,这是不必要的。将其从
web.xml
中删除,并删除所有松散的TLD文件。您应该在
/WEB-INF/lib
中有
jstl.jar
standard.jar
。或者在使用JSTL 1.2时,只需使用
JSTL-1.2.jar
。没有什么需要做的了

另见:

属性文件名为msg。性质

<fmt:bundle basename="msg">
<fmt:message key="error.more" />
</fmt:bundle>
<fmt:bundle basename="msg">
<fmt:message key="error.more" />
</fmt:bundle>
与属性文件中的消息不同,我认为问题在于定位属性文件,或者在
中的基本名称中定位属性文件,以及如何在代码中引用它

把它放在类路径中。在您的特定情况下,对于基本名称
msg
,您需要将
msg.properties
文件放在类路径的根目录中

另见:
1)我应该在哪里找到属性文件? 您必须将属性文件保存在src目录中。例如,您有两个名为

消息属性

<fmt:bundle basename="msg">
<fmt:message key="error.more" />
</fmt:bundle>
<fmt:bundle basename="msg">
<fmt:message key="error.more" />
</fmt:bundle>
消息\u da.properties

<fmt:bundle basename="msg">
<fmt:message key="error.more" />
</fmt:bundle>
<fmt:bundle basename="msg">
<fmt:message key="error.more" />
</fmt:bundle>
在一个名为如下的包中

com.isuru.test.i18N.resources

2)如何在代码中引用它?

<fmt:setLocale value="en" scope="session"/>
<fmt:bundle basename="com.isuru.test.i18N.resources.Messages" scope="session">
<fmt:message key="error.more" />


这将以英语打印相关的消息

,正如Isuru所说,您必须将属性文件放在一个包中,就像您在谈论一个类一样

我遇到了一个奇怪的问题,我一直正确地引用我的属性文件,但从未得到正确的输出,我发现您的属性包必须遵循相同的包名格式,因此如果您有包:

com.test.clients   
com.test.stores 
您必须创建如下内容:

com.test.i18n 
你做不到

other.test.i18n
您可以在这里存储您的属性文件

error.more.properties
error.more_es_MX.properties
然后像平常一样引用它们:

<c:set var="language" value="${not empty param.language ? param.language : not empty language ? language : pageContext.request.locale}" scope="session" />
<fmt:setLocale value="${language}" />
<fmt:setBundle basename="com.example.i18n.text" />
<fmt:message key="error.more" />

这里还有一个关于如何国际化你的web应用的好答案


如何国际化java web应用程序可以通过以下步骤完成。我将messages_en.properties文件放在src/main/resources文件夹下,并使用下面的代码引用了属性文件。我没有考虑任何本地化,所以没有提及任何与此相关的内容

  • 在jsp中引用JSTL fmt uri

  • 在jsp中引用该捆绑包。

  • 使用属性文件中定义的键。
  • <c:set var="language" value="${not empty param.language ? param.language : not empty language ? language : pageContext.request.locale}" scope="session" />
    <fmt:setLocale value="${language}" />
    <fmt:setBundle basename="com.example.i18n.text" />
    <fmt:message key="error.more" />