Spring MVC将代理变量注入模型

时间:2013-12-02 10:41:21

标签: spring jsp spring-mvc user-agent

我想根据用户代理对我的观点做出某些决定,但我不想用JavaScript来做。

所以我决定在服务器端通过读取我的控制器方法中的HttpServletRequest然后将用户代理注入模型,并使用JSTL相应地显示jsp来检查注入的变量。

问题是,我想为我的所有视图执行此操作(某些决策可能在所有页面的基本布局中),但我不想通过所有控制器方法并放置{每个人都有{1}}个。有什么方法可以让这个变量适用于所有视图吗?

我虽然使用model.addAttrbiute(),但我无法访问请求信息(或我)?

2 个答案:

答案 0 :(得分:2)

你试过吗?据我所知,可以在请求映射方法上使用的“所有”可能参数也可以用于modelattribute方法。你甚至可以链接这些方法。我自己还没有使用过httprequest。试一试。

将它与类@ControllerAdvice结合使用,您将在所有模型中使用它。

答案 1 :(得分:1)

您可以在类级别使用@ControllerAdvice注释,这将影响所有控制器。 在方法级别将其与@ModelAttribute结合使用,您将获得预期的结果。

访问请求信息时:
一种方法是在会话中保存User-Agent值(在发出第一个请求时),然后在使用@ModelAttribute注释的方法中从会话中获取它:

这样,您可以在从任何控制器返回的每个视图中获得User-Agent值。