目录结构:
spring配置:
<!-- spring MVC 国际化处理 --> <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> <property name="basenames"> <list> <value>messages.qweqweqwe</value> </list> </property> <property name="cacheSeconds" value="-1"/> <property name="useCodeAsDefaultMessage" value="true" /> </bean> <bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver"/>
jsp写法:
<spring:message code="title"/>
一直报
javax.servlet.ServletException: javax.servlet.jsp.JspTagException: No message found under code 'title' for locale 'zh_CN'.
觉得可能是properties的路径不正确,但不清楚哪不对
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
根据你提供的信息,问题可能出在Spring的国际化配置与JSP页面读取资源文件的路径不匹配上。下面是一些可能的解决方案和检查点:
messages.properties
的位置确保你的messages.properties
文件位于正确的目录下,并且Spring能够扫描到它。根据你的配置,Spring默认会从类路径下的i18n
目录查找资源文件。因此,messages.properties
应该直接放在src/main/resources/i18n/
目录下(对于Maven项目)或相应的类路径目录下。
messages_zh_CN.properties
的文件。messages.properties
作为默认资源文件。你的Spring配置看起来是正确的,指定了basename为classpath:i18n/messages
,这意味着Spring会自动寻找messages.properties
以及特定语言环境的变体如messages_zh_CN.properties
。
确保你在JSP页面中正确引用了国际化消息键值。例如:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
<title><fmt:message key="title"/></title>
</head>
<body>
<h1><fmt:message key="welcome.message"/></h1>
</body>
</html>
这里的关键在于使用了fmt:message
标签,并且通过key
属性指定要显示的消息键值。
有时候即使修改了配置或资源文件,也需要重启应用服务器以使更改生效。
查看应用启动时的日志输出,Spring在初始化时通常会打印出加载的国际化资源文件信息,这有助于确认是否正确加载了你的messages.properties
。
如果以上步骤都确认无误,但问题依旧存在,可能需要进一步检查项目的构建路径设置,确保资源文件被正确打包到了类路径中。此外,也可以尝试在Java代码中直接使用MessageSource
来获取消息,以排除JSP层面的问题。