我使用Spring MVC创建了一个webapp。我通过我的调度员serlvet中的拦截器建立国际化,如下所示:
<bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="lang" />
</bean>
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
<property name="defaultLocale" value="es" />
</bean>
然后我可以在我的控制器中访问当前的语言环境,如下所示:
LocaleContextHolder.getLocale()
哪个很棒,因为我可以随时更改我的语言环境并在任何地方访问当前配置。
现在我想对一些行为类似的自定义变量做同样的事情,因为它们会略微影响我应用的所有行为。 (例如,“可访问”参数表示应该只提供可访问内容的应用程序。)
我知道我可以创建自己的拦截器来拦截任何名为“可访问”的参数,如下所示:
<bean id="localeChangeInterceptor" class="com.myapp.MyInterceptor">
<property name="paramName" value="accesible" />
</bean>
但有没有办法可以在我的应用程序中访问此值,就像LocaleContextHolder对象使用locale一样?我可以让Spring通过Cookie likeo注入它吗?
答案 0 :(得分:0)
当你在整个应用程序中说,你的意思是“整个”应用程序(如服务,dao /存储库)还是仅仅是应用程序的Web部分? RequestContextHolder(http://docs.spring.io/spring/docs/3.0.x/javadoc-api/org/springframework/web/context/request/RequestContextHolder.html)会帮助你的案子吗?它有一个选项来检索currentRequestAttributes,它是RequestAttributes接口的一个实现。
我没有亲自尝试过,但RequestAttributes javadoc引用“支持访问请求范围的属性以及会话范围的属性,可选的概念是”全局会话“。”