弹簧版本:2.5.6
我目前的思路是与UrlBasedViewResolver相似的实现,这样一来,用户代理值就是通过匹配正则表达式(key)将Map’d(通过context)映射到特定目录(value).
我几乎肯定有一个更简单的方法.
以前发布了一个基于User-Agent的主题确定的类似问题.然而,我的理解是,主题更多地涉及静态(css,js)内容,而不是哪个文件处理实际的响应构造(HTML,XML等).
解决方法
几个月前我有同样的问题!
在我们的移动项目(使用Spring 2.5.6)中,我们最终在SimpleUrlHandler中使用了一个拦截器.这捕获了所有传入的请求,并将-m.jsp添加到任何移动请求的末尾.
它涉及两个步骤:
1)向我们的标准URL映射器声明拦截器:
<bean id="handlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <!-- This interceptor catches all requests and redirects them to portal or mobile html content. --> <property name="interceptors"> <list> <ref bean="MultiViewController"/> </list> </property>
和2)实现Interceptor,它在用户代理中查找“Mobile”这个词.
public class MultiViewController extends HandlerInterceptorAdapter {
我在我的博客(关于新的令人兴奋的移动网页开发世界)发布:http://plumnash.com/it/iphone-web-development-using-spring/更详细地谈论它