当前位置: 首页 > 知识库问答 >
问题:

Spring Boot Mvc实现国际化面临的问题

慕容超
2023-03-14

在访问网址时,我得到以下异常。

org.springframework.web.util.NestedServletExc0019:请求处理失败;嵌套异常是java.lang.不支持操作异常:不能更改HTTP接受标头-使用不同的区域设置解析策略org.springframework.web.servlet.FrameworkServlet.process请求(FrameworkServlet.java:1014)org.springframework.web.servlet.FrameworkServlet.do获取(FrameworkServlet.java:898)javax.servlet.http.HttpServlet.service(HttpServlet.java:626)org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)javax.servlet.http.HttpServlet.service(HttpServlet.java:733)org.apache.tomcat.websocket.server.WsFilter.do过滤器(WsFilter.java:53)org. springframework. web. filter.@no___________________________________________________________________________________________________________________. doFilter(OncePerrecestFilter. java: 119)org. springframework. web. filter.OncePer刚需过滤器. doFilter(OncePer刚需过滤器. java: 103)org. springframework. web. filter.OncePer刚需过滤器. doFilter(OncePer刚需过滤器. java: 103)org. springframework. boot. web. servlet. support.错误PageFilter.转发ToErrorPage(ErrorPageFilter. java: 193)org. springframework. boot. web. servlet. support.错误PageFilter. handleExc0019(ErrorPageFilter. java: 178)org. springframework. boot. web. servlet. support.错误PageFilter. doFilter(错误PageFilter. java: 145)org. springframework. boot. web. servlet. support.访问0美元(错误PageFilter. java: 66)org. springframework. boot. web. servlet. support.错误PageFilter1美元。OncePer刚需过滤器. doFilter(OncePer刚需过滤器. java: 119)org. springframework. boot. web. servlet. support.错误PageFilter. doFilter(错误PageFilter. java: 121)org. springframework. web. filter.Filter. doFilter内部(特征EncodingFilter. java: 201)org. springframework. web. filter.根原因

JAVAlang.UnsupportedOperationException:无法更改HTTP accept标头-请使用其他区域设置解析策略。springframework。网状物servlet。i18n。AcceptHeaderLocaleResolver。setLocale(AcceptHeaderLocaleResolver.java:142)org。springframework。网状物servlet。i18n。LocaleChangeInterceptor。preHandle(localechangereceptor.java:154)org。springframework。网状物servlet。HandlerExecutionChain。applyPreHandle(HandlerExecutionChain.java:141)org。springframework。网状物servlet。调度员服务。doDispatch(DispatcherServlet.java:1035)org。springframework。网状物servlet。调度员服务。doService(DispatcherServlet.java:943)org。springframework。网状物servlet。FrameworkServlet。processRequest(FrameworkServlet.java:1006)org。springframework。网状物servlet。FrameworkServlet。doGet(FrameworkServlet.java:898)javax。servlet。http。HttpServlet。服务(HttpServlet.java:626)org。springframework。网状物servlet。FrameworkServlet。服务(FrameworkServlet.java:883)javax。servlet。http。HttpServlet。服务(HttpServlet.java:733)组织。阿帕奇。公猫websocket。服务器WsFilter。doFilter(WsFilter.java:53)org。springframework。网状物滤器RequestContextFilter。doFilterInternal(RequestContextFilter.java:100)org。springframework。网状物滤器OncePerRequestFilter。doFilter(OncePerRequestFilter.java:119)org。springframework。网状物滤器OncePerRequestFilter。doFilter(OncePerRequestFilter.java:103)org。springframework。网状物滤器OncePerRequestFilter。doFilter(OncePerRequestFilter.java:103)org。springframework。靴子网状物servlet。支持错误页面过滤器。forwardToErrorPage(ErrorPageFilter.java:193)org。springframework。靴子网状物servlet。支持错误页面过滤器。handleException(ErrorPageFilter.java:178)org。springframework。靴子网状物servlet。支持错误页面过滤器。doFilter(ErrorPageFilter.java:145)org。springframework。靴子网状物servlet。支持错误页面过滤器。访问$000(ErrorPageFilter.java:66)org。springframework。靴子网状物servlet。支持ErrorPageFilter 1美元。doFilterInternal(ErrorPageFilter.java:103)org。springframework。网状物滤器OncePerRequestFilter。doFilter(OncePerRequestFilter.java:119)org。springframework。靴子网状物servlet。支持错误页面过滤器。doFilter(ErrorPageFilter.java:121)org。springframework。网状物滤器字符编码过滤器。doFilterInternal(CharacterEncodingFilter.java:201)org。springframework。网状物滤器OncePerRequestFilter。doFilter(OncePerRequestFilter.java:119)
我的配置类如下所示:

package com.spring.mvc.messenger.config;

import java.util.Locale;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
import org.springframework.web.servlet.i18n.SessionLocaleResolver;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

@Configuration
public class MessengerConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/files/**").addResourceLocations("/WEB-INF/pdf/");
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(getLocaleChangeInterceptor());
    }

    @Bean
    public LocaleChangeInterceptor getLocaleChangeInterceptor() {
        LocaleChangeInterceptor localChangeInterceptor = new LocaleChangeInterceptor();
        localChangeInterceptor.setParamName("lang");
        return localChangeInterceptor;
    }

    @Bean
    public ViewResolver getViewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/jsp/");
        resolver.setSuffix(".jsp");
        resolver.setOrder(0);
        return resolver;
    }

    @Bean
    public LocaleResolver getLocaleResolver() {
        SessionLocaleResolver localeResolver = new SessionLocaleResolver();
        localeResolver.setDefaultLocale(new Locale("en", "US"));
        return localeResolver;
    }

}

我的message.properties文件有以下细节:

#labels
name=Name

#button
save.changes=Save Changes

我的message_es.properties文件有以下细节:

#labels
name=Nombre   

#button
save.changes=Guardar cambios

我的Jsp文件是

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>

<!DOCTYPE html>

<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
    <h1>Welcome Home Jsp</h1>
    <spring:message code="name" />
</body>
</html>

我的控制器类

package com.spring.mvc.messenger.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
@RequestMapping("/")
public class MessengerController {

    @GetMapping
    public ModelAndView getHomePage(Model model) {
        return new ModelAndView("WelcomeHome");
    }

    @GetMapping(value = "/home")
    public ModelAndView homePage(Model model) {
        return new ModelAndView("WelcomeHome");
    }

}

我的应用程序类是

package com.spring.mvc.messenger;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@SpringBootApplication
public class MessengerApplication extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(MessengerApplication.class, args);
    }

}

有人能帮我解决这个问题吗...我尝试使用不同的语言环境。但类似的反应仍然得到了

共有1个答案

周越泽
2023-03-14

有时错误可能是因为没有添加注释“@EnableWebMvc”

 类似资料:
  • 凭我仅剩不多的印象写一下~ 一面 #数据人的面试交流地# 1.常规自我介绍 2.sql题:两个表 (1)求最后一次登陆时间 (2)求该年最大连续登陆天数 3.业务相关 (1)异常数据如何分析 (2)在没有拼车业务的国家开展拼车业务,目前有各城市快车业务的数据和公共数据(例如可以查到的城市人口等),如何确定最合适的两个城市来开展拼车业务? (3)你认为开展拼车业务对这个国家的乘客、司机以及我们平台有

  • 手撕:快速排序 场景题: 实习:讲业务,实习收获 项目:黑马学成在线 请求URL: 组成部分 Get Post MySQL: 5000万数据量,给出一些字段让建表->找慢SQL->索引相关->执行过程 Redis: 应用场景、项目中存的课程信息,缓存一致性解决 这块就是一直给各种场景,然后一步步来考虑,不是很麻烦 Linux: 查看Java项目是否运行 ps -aux | grep 查看 占用端口

  • 本文向大家介绍基于Session的国际化实现方法,包括了基于Session的国际化实现方法的使用技巧和注意事项,需要的朋友参考一下 如何将我们网站的其它内容(如菜单、标题等)做国际化处理呢?这就是本篇要将的内容—>国际化。 在项目的spring.xml文件添加的内容如下 在项目中的源文件夹resources中添加myproperties.properties、myproperties_zh_.pr

  • 概述 为了让Django项目可翻译,你必须添加一些钩子到你的Python 代码和模板中。这些钩子叫做翻译字符串。它们告诉Django:“如果这个文本的翻译可用,应该将它翻译成终端用户的语言。”你需要标记这些可翻译的字符串;系统只会翻译它知道的字符串。 Django 提供一些工具用于提取翻译字符串到消息文件中。这个文件方便翻译人员提供翻译字符串的目标语言。翻译人员填充完消息文件后,必须编译它。这个过

  • 介绍 Vant 采用中文作为默认语言,同时支持多语言切换,请按照下方教程进行国际化设置。 使用方法 多语言切换 Vant 通过 Locale 组件实现多语言支持,使用 Locale.use 方法可以切换当前使用的语言。 import { Locale } from 'vant'; // 引入英文语言包 import enUS from 'vant/es/locale/lang/en-US'; L

  • 国际化 Element 组件内部默认使用中文,若希望使用其他语言,则需要进行多语言设置。以英文为例,在 main.js 中: // 完整引入 Element import Vue from 'vue' import ElementUI from 'element-ui' import locale from 'element-ui/lib/locale/lang/en' Vue.use(Elem