开发者社区 问答 正文

spring国际化配置,properties一直加载不上:报错

目录结构:

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的路径不正确,但不清楚哪不对



展开
收起
kun坤 2020-06-07 22:44:31 580 分享 版权
阿里云 AI 助理回答

根据你提供的信息,问题可能出在Spring的国际化配置与JSP页面读取资源文件的路径不匹配上。下面是一些可能的解决方案和检查点:

1. 检查messages.properties的位置

确保你的messages.properties文件位于正确的目录下,并且Spring能够扫描到它。根据你的配置,Spring默认会从类路径下的i18n目录查找资源文件。因此,messages.properties应该直接放在src/main/resources/i18n/目录下(对于Maven项目)或相应的类路径目录下。

2. 确认properties文件命名

  • 对于中文(zh_CN),你应该有一个名为messages_zh_CN.properties的文件。
  • 如果你的默认语言是英文,那么需要一个messages.properties作为默认资源文件。

3. Spring 配置检查

你的Spring配置看起来是正确的,指定了basename为classpath:i18n/messages,这意味着Spring会自动寻找messages.properties以及特定语言环境的变体如messages_zh_CN.properties

4. JSP页面使用方式

确保你在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属性指定要显示的消息键值。

5. 重启应用服务器

有时候即使修改了配置或资源文件,也需要重启应用服务器以使更改生效。

6. 查看日志

查看应用启动时的日志输出,Spring在初始化时通常会打印出加载的国际化资源文件信息,这有助于确认是否正确加载了你的messages.properties

如果以上步骤都确认无误,但问题依旧存在,可能需要进一步检查项目的构建路径设置,确保资源文件被正确打包到了类路径中。此外,也可以尝试在Java代码中直接使用MessageSource来获取消息,以排除JSP层面的问题。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答