关于javax.servlet.jsp.JspTagException: No message found under code 'name' for locale 'zh_CN'.错误的原因分析

1 篇文章 0 订阅

javax.servlet.jsp.JspTagException: No message found under code 'name' for locale 'zh_CN'.是国际化中的常见错误。

在说明问题之前,先简单说明一下xml中的配置。

首先你在xml里配置的MessageSource代码应该是这样的(只加载一个资源文件messages.properties):

<bean id="messageSource"
    class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basename" value="messages"></property>
</bean>
如果你要加载的资源属性文件有多个(属性文件名分别为messages1.properties,messages2.properties,messages3.properties),xml里的配置代码是这样的:

<bean id="messageSource"
    class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basenames">
        <list>
            <value>messages1</value>
            <value>messages2</value>
            <value>messages3</value>
        </list>
    </property>
</bean>


在上面的代码中,有以下几点需要注意:
1.如果你使用eclipse创建的工程是class和src分开的,那么资源属性文件一定要放在src目录以内
2.属性文件名的写法:
messages_zh_CN.properties  (中文)(也可以省略_zh_CH后缀,写成messages.properties)
messages_en_US.properties  (英文)
3.bean的id一定是messageSource不是messageResource ,这是Spring规定的。
4.因为Spring从classpath根路径下加载这些资源文件,所以这些文件应该放在根路径下。如果资源文件messages.properties不是在根路径下而在包com.test.msgs下的话,value标签的值就应该是这样的:
<value>com.test.msgs.messages</value>
注:Java JDK的标准 ResourceBundle 将点(.)视为包分隔符,这也意味着"test.theme" 等同于 "test/theme".


以上的注意事项是我从网上一篇博客中看到的,我补充了一些知识。
然而它们并没有解决我的问题。我依照上述注意事项检查我的代码,没有发现错误之处,所以我只好自己再找找其他的原因,最后还终于给找到了,是我犯了一个低级错误: 我没有为使用<spring:message>标签的JSP文件编写一个控制器来处理请求,而是直接请求了该JSP文件。
在解决了上面的失误之后,问题解决了!


参考文章: http://blog.sina.com.cn/s/blog_4cab775e01000a14.html

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 这个错误提示是指在项目中找不到依赖的javax.servlet-api 3.1.版本。可能是因为该依赖没有被正确添加到项目的依赖列表中,或者版本号不正确。需要检查项目的依赖配置,确保依赖被正确添加,并且版本号与代码中引用的版本号一致。 ### 回答2: 当我们在运行Java Web项目时,可能会遇到类似于“dependency 'javax.servlet:javax.servlet-api:3.1.0' not found”的错误提示。这是因为我们的项目缺少了servlet-api的依赖。 servlet-api是Java Servlet规范的API,是Java Web开发中一种常用的技术。要解决这个问题,我们可以进行如下的操作: 1.检查pom.xml文件:如果我们使用Maven进行项目管理,则可以检查pom.xml文件中是否有servlet-api的依赖。如果没有,则可以手动添加以下代码: <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> 2.检查项目的构建路径:在Eclipse等IDE中,在项目的Build Path中添加servlet-api.jar的路径,可能需要下载相应的jar包。 3.升级Tomcat版本:如果我们使用的是Tomcat服务器,可以尝试升级Tomcat的版本,因为较新的Tomcat版本已经将servlet-api包含在内了。 通过上述的方法,我们可以很快地解决“dependency 'javax.servlet:javax.servlet-api:3.1.0' not found”错误,使得项目可以正常运行。在日常开发中,我们也应该注意依赖的管理,以免出现类似的问题。 ### 回答3: "Dependency 'javax.servlet:javax.servlet-api:3.1.0' not found"通常是Java项目中出现的一个错误信息。这个错误信息意味着在Java项目的配置文件中,需要使用javax.servlet:javax.servlet-api:3.1.0这个依赖包,但是该依赖包缺失或者未被正确地配置。 要解决这个错误,首先需要确认一下项目依赖的配置文件,一般是pom.xml文件。检查pom.xml文件中是否存在这个依赖包的配置,如果没有,需要手动添加。 如果已经添加了该依赖包却仍然提示错误,可能是由于Maven本地仓库缺失了这个包的jar文件引起。这时可尝试手动下载这个依赖包,并加入本地Maven仓库。 此外,还有一种可能是该依赖包所在的远程库无法被正确地访问,解决方法可以是更改远程库地址或者使用其他可用的远程库。可以尝试在pom.xml文件中使用以下代码片段更改远程库地址: ``` <repositories> <repository> <id>central</id> <url>http://repo1.maven.org/maven2</url> </repository> </repositories> ``` 总之,要解决"Dependency 'javax.servlet:javax.servlet-api:3.1.0' not found"错误,需要逐一排查以上可能的原因,找到问题所在并进行相应的更改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值