Spring Mobile 2.0.0 M3

4500 ワード

Spring Mobileは、Spring Webサイトに要求されたデバイスタイプを検出する機能を提供し、デバイスベースの他のビューを提供するフレームワークです.すべてのSpringプロジェクトのように、Spring Mobileの本当の威力は拡張性にあります.モバイルデバイスおよびタブレットデバイスサーバ側の検出に使用されるデバイス解析器抽象サイトプリファレンス管理を特徴とし、ユーザーが「通常」、「移動」または「タブレット」が好きかどうかを示すサイト切替器であり、ユーザーのデバイスおよびオプションの指定サイトの好みに応じて、ユーザーを最適なサイト(モバイル、タブレット、または通常のサイト)に切り替えて、特定のデバイスの異なるビューを整理および管理するデバイスセンシングビュー管理スプリングブーツ構成SpringMobileを使用するには、次の依存項目をアプリケーションに追加します.馬文org.springframework.mobile spring-mobile-device 2.0.0.M 3 spring-milestones Spring Milestoneshttps://repo.spring.io/libs-milestone false
Gradle
dependencies { compile ‘org.springframework.mobile:spring-mobile-device:2.0.0.M3’ }repositories { maven { url ‘https://repo.spring.io/libs-milestone’ } }
Device detection
Add the following Java-based configuration to enable device detection in a Spring web application:
@Bean public DeviceResolverHandlerInterceptor deviceResolverHandlerInterceptor() { return new DeviceResolverHandlerInterceptor(); }
@Bean public DeviceHandlerMethodArgumentResolver deviceHandlerMethodArgumentResolver() { return new DeviceHandlerMethodArgumentResolver(); }
@Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(deviceResolverHandlerInterceptor()); }
@Override public void addArgumentResolvers( List argumentResolvers) { argumentResolvers.add(deviceHandlerMethodArgumentResolver()); }
Inject the Device into your controller:
@Controller public class HomeController {
private static final Logger logger =
        LoggerFactory.getLogger(HomeController.class);

@RequestMapping("/")
public void home(Device device) {
    if (device.isMobile()) {
        logger.info("Hello mobile user!");
    } else if (device.isTablet()) {
        logger.info("Hello tablet user!");
    } else {
        logger.info("Hello desktop user!");
    }
}

}
Site preference
Add the following Java-based configuration to enable site preference management in a Spring web application:
@Bean public DeviceResolverHandlerInterceptor deviceResolverHandlerInterceptor() { return new DeviceResolverHandlerInterceptor(); }
@Bean public SitePreferenceHandlerInterceptor sitePreferenceHandlerInterceptor() { return new SitePreferenceHandlerInterceptor(); }
@Bean public SitePreferenceHandlerMethodArgumentResolver sitePreferenceHandlerMethodArgumentResolver() { return new SitePreferenceHandlerMethodArgumentResolver(); }
@Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(deviceResolverHandlerInterceptor()); registry.addInterceptor(sitePreferenceHandlerInterceptor()); } @Override public void addArgumentResolvers( List argumentResolvers) { argumentResolvers.add(sitePreferenceHandlerMethodArgumentResolver()); }
Inject the SitePreference into your controller:
@Controller public class HomeController {
private static final Logger logger =
        LoggerFactory.getLogger(HomeController.class);

@RequestMapping("/")
public String home(SitePreference sitePreference, Model model) {
    if (sitePreference == SitePreference.NORMAL) {
        logger.info("Site preference is normal");
        return "home";
    } else if (sitePreference == SitePreference.MOBILE) {
        logger.info("Site preference is mobile");
        return "home-mobile";
    } else if (sitePreference == SitePreference.TABLET) {
        logger.info("Site preference is tablet");
        return "home-tablet";
    } else {
        logger.info("no site preference");
        return "home";
    }
}

}
Device aware view resolution
Add the following Java-based configuration to enable device aware views in a Spring web application. This specifies that Spring Mobile will look for mobile views in/WEB-INF/views/mobile/and tablet views in/WEB-INF/views/tablet/.
@Bean public LiteDeviceDelegatingViewResolver liteDeviceAwareViewResolver() { InternalResourceViewResolver delegate = new InternalResourceViewResolver(); delegate.setPrefix("/WEB-INF/views/"); delegate.setSuffix(".jsp"); LiteDeviceDelegatingViewResolver resolver = new LiteDeviceDelegatingViewResolver(delegate); resolver.setMobilePrefix(“mobile/”); resolver.setTabletPrefix(“tablet/”); return resolver; }
Spring Initializr Quickstart Your Project Bootstrap your application with Spring Initializr.