我们有一个基于Spring MVC的Web应用程序.现在我们需要修改此应用程序,以便在智能手机上正确呈现.
为此,我们将为智能手机创建单独的JSP.因此,请求来自浏览器,我们将检查请求是否来自桌面然后我们将显示正常的JSP,或者如果请求来自移动,那么我们将显示智能手机的JSP.
我们将使用spring Mobile.
在某些情况下,我们还希望限制智能手机上的数据.我们可能不会在JSP中显示所有数据.
例如,我们可能只需在菜单中显示几个项目.桌面Web应用程序将显示完整菜单,而智能手机将显示较少的菜单项.即使我们将为桌面菜单和移动菜单使用不同的JSP,菜单项也来自数据库.
是否有任何设计模式可以帮助我们?我们不想写那些if else条件来检查设备类型.
Spring移动文档建议添加以下配置:
<mvc:annotation-driven>
<mvc:argument-resolvers>
<beans:bean class="org.springframework.mobile.device.DeviceWebArgumentResolver" />
</mvc:argument-resolvers>
</mvc:annotation-driven>
Run Code Online (Sandbox Code Playgroud)
将当前的Device对象作为参数传递给@Controller方法.
然而,人们可以使用:
@EnableWebMvc
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
}
Run Code Online (Sandbox Code Playgroud)
和旁路<mvc:annotation-driven>配置.
那么,如何以DeviceWebArgumentResolver编程方式添加?
解决方案(卢西亚诺):
@EnableWebMvc
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addArgumentResolvers(
List<HandlerMethodArgumentResolver> argumentResolvers) {
// Adding Spring mobile argument resolvers
argumentResolvers.add(
new ServletWebArgumentResolverAdapter(
new DeviceWebArgumentResolver()));
argumentResolvers.add(
new ServletWebArgumentResolverAdapter(
new SitePreferenceWebArgumentResolver()));
}
// ...
}
Run Code Online (Sandbox Code Playgroud) 目标是缓存来自Web服务的一些响应.
我使用Spring for Android框架 - http://www.springsource.org/spring-android#documentation与restful服务进行通信.据我所知,我可以使用常见Spring Framework中的一些模块将缓存添加到应用程序中(http://viralpatel.net/blogs/cache-support-spring-3-1-m1/).我是对的,不可能只使用spring-for-android吗?那么解决方案是什么?
*我没有任何共同春天的经验.
我有一个要求,在所有控制器中我需要了解设备类型(台式机、移动设备、平板电脑),并且基于此我可能需要将请求发送到不同的视图。现在,我的控制器中散落着重复的代码,这些代码执行以下操作:
为了解决这个问题,我发现 spring-mobile 可以帮助解决这个问题。但不幸的是,这个项目似乎被放弃了。我正在寻找一个更好的替代方案作为依赖项,或者可能是一个更好的设计模式来处理这个问题。
我使用Spring MVC和MySQL在Openshift上创建了一个Web应用程序.
现在我想为这个应用程序移动.我想将相同的应用程序发布为移动应用程序(主要是Android).首先,这个移动版本也应该使用HttpPost/Webservice安全授权.
我知道Pivotal有一个Spring Mobile项目,它可以为同一个应用程序创建一个移动站点(更复杂,如spring form标签和所有).
另一方面,Phonegap可以借助HTML5和CSS创建一个跨平台的移动应用程序.
我的问题是:
一些利弊或任何参考链接将有所帮助.