![](/img/trans.png)
[英]i'm new to spring and facing the below issue while running spring boot project
[英]Facing Issue while implementing internationalization in Spring Boot Mvc
在訪問 url 時,我遇到了以下異常。
org.springframework.web.util.NestedServletException:請求處理失敗; nested exception is java.lang.UnsupportedOperationException: Cannot change HTTP accept header - use a different locale resolution strategy org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) org.springframework.web.servlet.FrameworkServlet.doGet (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.ZBF56D570E62CDB5 73C86B18526296117Z.server.WsFilter.doFilter(WsFilter.java:53) org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103) org.springframework.boot.web.servlet.support.ErrorPageFilter. forwardToErrorPage(ErrorPageFilter.java:193) org.springframework.boot.web.servlet.support.ErrorPageFilter.handleException(ErrorPageFilt er.java:178) org.springframework.boot.web.servlet.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:145) org.springframework.boot.web.servlet.support.ErrorPageFilter.access$000(ErrorPageFilter.java:66 ) org.springframework.boot.web.servlet.support.ErrorPageFilter$1.doFilterInternal(ErrorPageFilter.java:103) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) org.springframework.boot.web. servlet.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:121) org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201 ) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) 根本原因
java.lang.UnsupportedOperationException: Cannot change HTTP accept header - use a different locale resolution strategy org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver.setLocale(AcceptHeaderLocaleResolver.java:142) org.springframework.web.servlet.i18n.LocaleChangeInterceptor. preHandle(LocaleChangeInterceptor.java:154) org.springframework.web.servlet.HandlerExecutionChain.applyPreHandle(HandlerExecutionChain.java:141) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1035) org.springframework.web. servlet.DispatcherServlet.doService(DispatcherServlet.Z93F725A07423FE1C889F448B33D21F46 Z:943) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) org.springframework.web.servlet.FrameworkServlet.doGet(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.doFilter(WsFilter.java:53) org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.Z93F725 A07423FE1C889F448B33D21F46Z:100) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103) org.springframework.web.filter.OncePerRequestFilter. doFilter(OncePerRequestFilter.java:103) org.springframework.boot.web.servlet.support.ErrorPageFilter.forwardToErrorPage(ErrorPageFilter.java:193) org.springframework.boot.web.servlet.support.ErrorPageFilter.handleException(ErrorPageFilter.java: 178) org.springframework.boot.web.servlet.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:145) org.springframework。 boot.web.servlet.support.ErrorPageFilter.access$000(ErrorPageFilter.java:66) org.springframework.boot.web.servlet.support.ErrorPageFilter$1.doFilterInternal(ErrorPageFilter.java:103) org.springframework.web.filter. OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) org.springframework.boot.web.servlet.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:121) org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
我的配置 Class 如下所示:
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>
我的 Controller Class
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);
}
}
誰能幫我解決這個問題。我嘗試過使用不同的語言環境。 但仍然有類似的反應
有時錯誤可能與未添加注釋“@EnableWebMvc”有關
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.