gpt4 book ai didi

java - localeChangeInterceptor 不起作用

转载 作者:行者123 更新时间:2023-12-01 23:36:26 25 4
gpt4 key购买 nike

我有非常标准的配置,我不断编辑很多次,检查了其他问题,但通过我的最终配置,大多数人都解决了他们的问题,但对我来说没有结果。每当触发请求时,例如:

http://localhost:8080/appName/?lang=es_MX

http://localhost:8080/appName?lang=es_MX 它无法解析正确的区域设置,它什么也不做。

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="/WEB-INF/messages" />
</bean>


<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver"></bean>


<mvc:interceptors>
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="lang" />
</bean>
</mvc:interceptors>

我知道 header 的默认区域设置解析器可以工作,所以我的 messageResource 和 .jsp 配置是正确的,因为我明确设置了一个浏览器以具有 es_MX 区域设置,并且它可以正确地使用 AcceptHeaderLocaleResolver 进行解析。

这与我的处理程序映射的定义方式有关吗?

@RequestMapping(value = "/", method = RequestMethod.GET)
public String home( Model model, Locale locale, HttpServletRequest hr) {

String header = hr.getHeader("User-Agent");
model.addAttribute("header", header);
String contextPath = hr.getContextPath();
model.addAttribute("contextPath", contextPath);

return "index";
}

上帝啊,我花了这么多时间在这上面......请帮助

最佳答案

我通过将拦截器放入 servlet-context.xml 而不是我的其他配置中解决了这个问题。现在尝试找出为什么在 servlet-context.xml 中它可以工作而在我的专用配置中却不能,您的见解将很有值(value)! :-) 我不接受我的回答,因为它没有解释原因。请解释为什么会出现这种情况(这样我就可以测试它 - 理想情况下将拦截器放置在我的自定义配置中)。

对于任何遇到麻烦的人,请尝试以下操作:

<interceptors>
<beans:bean
class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"
p:paramName="lang" />
</interceptors>

在 servlet-context.xml 中

需要命名空间:

 xmlns:p="http://www.springframework.org/schema/p" 

SessionLocaleResolver 似乎并不关心位置,并且也适用于我的自定义配置位置。

关于java - localeChangeInterceptor 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18606857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com