SpringMVC - 移动访问时更改视图

Che*_*ech 11 java spring spring-mvc mobile-website

我想知道是否有人已经解决了这个问题.我有一个SpringMVC应用程序,我们正在添加对WebKit类型移动设备(基本上是iPhone和Android)的支持,所以我想知道有人找到了一种优雅的方式来定义特定视图,具体取决于发送请求的客户端.

我知道在Controller实现中的一个简单的if可以做到这一点,但我正在寻找更灵活/更优雅的东西(特定的ViewResolver实现,或者拦截器).

将非常感谢帮助...一如既往=)


这是一个非常古老的问题.您需要做的是使用Spring-Mobile以标准的优雅方式实现这一目标

Boz*_*zho 9

更新:看看spring-mobile

原始答案:

创建一个ViewResolver基于User-Agent标头解析视图的自定义将非常简单.

  • 是一个移动用户代理列表(从维基百科中删除页面).检查标题,然后解析移动视图.
  • 如果用户代理不是移动设备,则返回null,从而让其他解析器解析视图.
  • 确保你的解析器以正确的顺序定义(在spring xml中),以便首先查询移动解析器.


Che*_*ech 1

好吧,我找到了更具体的答案。Bozho 提出的解决方案存在问题。事实上 ViewResolvers不再能够访问HttpServletRequest。有一种方法可以访问请求,但恕我直言,它有点脏。

也就是说,这是一个非常优雅且易于实现的解决方案。基本上它涉及一个自定义 ViewResolver (如 Bozho 提议的),但它添加了一个 handlerInterceptor,将 User-Agent 添加到模型中,因此您不再需要手动添加它。