Spring 4 i18n & l10n(无法更改 HTTP 接受标头)

2023-12-13

我需要帮助来解决此错误消息。我正在使用 spring 4,我想在我的项目中实现 i18n 和 l10n。
当我尝试更改语言时,会出现此消息。 下面是我的代码。 请问,有人可以帮我解决这个问题吗?

https://i.stack.imgur.com/tKJp7.jpg

Output:

ago 21, 2014 10:29:43 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [dispatcher] in context with path [/webapp] threw exception [Request processing failed; nested exception is java.lang.UnsupportedOperationException: Cannot change HTTP accept header - use a different locale resolution strategy] with root cause
java.lang.UnsupportedOperationException: Cannot change HTTP accept header - use a different locale resolution strategy
    at org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver.setLocale(AcceptHeaderLocaleResolver.java:46)
    at org.springframework.web.servlet.i18n.LocaleChangeInterceptor.preHandle(LocaleChangeInterceptor.java:73)
    at org.springframework.web.servlet.HandlerExecutionChain.applyPreHandle(HandlerExecutionChain.java:130)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:932)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:618)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:301)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118)
    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:154)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:199)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:110)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    at org.springframework.security.web.csrf.CsrfFilter.doFilterInternal(CsrfFilter.java:85)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:57)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:50)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)
    at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)
    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:136)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:74)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:526)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1017)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:652)
    at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1575)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1533)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

Config:

@Bean
    public MessageSource messageSource() {
        ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
        messageSource.setBasename("/resources/locale/locale");
        return messageSource;
    }

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

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

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

JSP:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
<%@ page language="java" session="true" %>

<html lang="en-us">
<head>
<title>${title}</title>
</head>

<body>

    <h1><spring:message code="label.title" /></h1>
    <h3>${pageContext.response.locale}</h3>
    <h4>Language : </h4><a href="?lang=en">English</a> | 
    <a href="?lang=pt">Portuguese Brazillian</a>    

    <!-- Logout form -->
    <h1>This is secured!</h1>
    <p>Hello <b><c:out value="${pageContext.request.remoteUser}" /></b></p>
    <c:url var="logoutUrl" value="/logout" />
    <form action="${logoutUrl}" method="post">
        <input type="submit" value="Log out" />
        <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
    </form>

</body>

</html>

Files:

locale.properties:
label.title = Hello World

locale_pt.properties:
label.title = Ola Mundo

问题出在你的配置上

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

这将构造一个名为的 beansessionLocaleResolver但是,那DispatcherServlet 寻找具有该名称的 beanlocaleResolver。如果没有检测到,它将使用默认值,即AcceptHeaderLocaleResovler.

解决方案非常简单将您的方法重命名为localeResolver或包括一个name属性中的@Bean注解。

@Bean
public LocaleResolver localeResolver() { ... }

or

@Bean(name="localeResolver")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring 4 i18n & l10n(无法更改 HTTP 接受标头) 的相关文章

随机推荐

  • 将具有未命名条目的列表列表转换为数据框或小标题

    我正在使用reticulateRStudio 中的 R 包运行一些 python 代码以从 ROOT 获取数据 http root cern ch 到 R 中 我的问题是 python 代码返回一个按行列表的列表 例如 在Python中 0
  • 通过 LINQ 将函数应用于集合的所有元素[重复]

    这个问题在这里已经有答案了 我最近开始使用 LINQ 它非常棒 我想知道 LINQ 是否允许我将函数 任何函数 应用于集合的所有元素 而不使用 foreach 类似于 python lambda 函数 例如 如果我有一个 int 列表 我可
  • python 打字模块:Mixin

    下面有没有课typing其行为类似于 mixin 例如 from typing import Union class A pass class B pass class C pass class D A B C pass current a
  • Rest Web 服务问题中使用 JSON 的 jQuery Ajax POST 调用

    我想将一个 JSON 对象从我的页面发布到 Rest WS 但是当我通过 jQuery ajax 调用发布 json 作为输出时 我得到一个带有 的 HTML 页面 HTTP 状态 405 不允许的方法 JSON 的状态 这是我从 Rest
  • 用逗号分割字符串并打印结果

    我使用以下代码来分割字符串并检索它们 Private Sub Button1 Click sender As Object e As EventArgs Handles Button1 Click Dim s As String a bc
  • 如何在R中高效使用Rprof?

    我想知道是否可以从以下位置获取个人资料R 代码的方式类似于matlab的探查器 也就是说 要知道哪些行号是特别慢的 到目前为止我所取得的成绩并不令人满意 我用了Rprof为我制作一个配置文件 使用summaryRprof我得到类似以下内容
  • 用于从网络摄像头进行手势识别的 C# 或 JAVA 库?

    我有一个手势识别项目 我想知道如何使用C 或Java来编程呢 有专门的图书馆吗 我需要编程还是需要特殊设备而不是网络摄像头 你看过吗OpenCV OpenCV 开源计算机视觉 是一个编程函数库 用于实时计算机视觉 OpenCV 的应用示例
  • 在Python中对类实例进行排序

    python 2 7 使用什么来对普通类实例进行排序 我对默认排序行为感兴趣 假设我有课 class S pass 然后我可以创建几个实例 并对它们进行排序 a S b S c S l a a b b c c sorted l 这将打印对象
  • Android 浏览器无法正确处理 touchmove 事件

    当我尝试检查touchmove事件在这个 jsbin 演示它只在 Chrome 和 Opera for Android 中触发一次 之后立即触发touchcancel事件 而不是继续触发touchmove events 基于两者W3C 规范
  • MySQL:何时真正需要 MySQL 中的刷新权限?

    创建新表和用户时 我通常只调用以下命令 CREATE DATABASE mydb GRANT ALL PRIVILEGES ON mydb TO myuser localhost IDENTIFIED BY mypassword 我从来没有
  • 尝试在 React 中导入组件时出现问题

    我在尝试使用 React 导入组件时遇到问题 app js 1 Uncaught ReferenceError 未定义 require 于 5 12 在我 babel min js 24 在 r babel min js 24 在 e sr
  • 在 Windows 7 上安装 Python 并分发会出现“写入失败...权限被拒绝”

    我使用的是 Windows 7 我完全承认我不了解其权限模型 我正在其他选项卡中阅读相关内容 我的用户是管理员 当我尝试运行 python allocate setup py 时 出现 写入失败 权限被拒绝 错误 然后出现 错误 无法在安装
  • 调用并行化 foreach 时出现问题

    我在使用 System Threading Tasks Parallel ForEach 时遇到问题 每个要更新的进度条的主体 但Invoke方法有时会冻结 我将代码附加到进度条和按钮的表单中 private void button1 Cl
  • 如何显示MySQL中未完成的事务

    我做了一些没有提交的查询 然后应用程序被停止 如何显示这些未结交易并提交或取消它们 如何显示这些未结交易并提交或取消它们 没有打开的事务 MySQL 将在断开连接时回滚事务 您无法提交事务 IFAIK 您使用显示线程 SHOW FULL P
  • C# 中根据空格分割字符串

    我有一个字符串 dexter 是好是坏 我想通过根据空格分割该字符串来创建一个列表 我使用以下代码实现了这一点 string ss dexter is good annd bad var s string IsNullOrEmpty ss
  • 从 Nunit 获取失败测试列表

    我有一个包含超过 8000 个测试的测试套件 并且很难看出哪些测试在代码更改之间中断 这些测试用例是从某些日志文件中自动提取的查询 有没有一种简单的方法来获取 NUnit 运行的失败测试列表 理想情况下 我想比较运行之间哪些测试受到影响 您
  • Protobuf-net 对 Dictionary/KeyValuePair 的支持是如何工作的?

    我试图了解 protobuf net 的 Dictionary KeyValuePair 支持 我们希望使用底层二进制流和从 java 生成的 proto 文件 但生成的 proto 文件包含看起来像名为 Pair String Int32
  • iOS 应用程序捆绑包 ID 错误和 iTunesConnect

    如本文所述SO entry 我在 iOS 应用程序应用程序上传器中遇到错误 这些是我的价值观 在钥匙串中我有这个证书 iPhone Distribution ExampleCompany DistCertificateID 在我的devel
  • 获取Linux中每个进程的堆和堆栈的大小

    我想知道Linux中每个进程的堆和堆栈的大小 有什么办法可以找到吗 我发现 sbrk 0 会给我堆的结尾 但是如何找到堆的起始位置来获取堆大小呢 另外 关于堆栈大小 是否有任何方法可以通过任何库调用或系统调用找到每个进程的堆栈开头和当前堆栈
  • Spring 4 i18n & l10n(无法更改 HTTP 接受标头)

    我需要帮助来解决此错误消息 我正在使用 spring 4 我想在我的项目中实现 i18n 和 l10n 当我尝试更改语言时 会出现此消息 下面是我的代码 请问 有人可以帮我解决这个问题吗 https i stack imgur com tK