3

我有一个网络应用程序,我想将移动版本添加到它..

所以我按照本指南添加了 spring-mobile,但我无法获得我的移动视图..

我不想在每个控制器的方法中添加这段代码:

if (device.isMobile()) {
  return "mobile/myPage.jspx";
} else if (device.isTablet()) {
  return "tablet/myPage.jspx";
} else {
  return "myPage.jspx";
}

所以我试图设置一个视图解析器来获取正确的页面。我使用 Tiles,这是它​​的配置:

<bean class="org.springframework.web.servlet.view.UrlBasedViewResolver" id="tilesViewResolver">
  <property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView" />
</bean>

然后我添加这个:

<bean class="org.springframework.mobile.device.view.LiteDeviceDelegatingViewResolver">
  <constructor-arg>
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
      <property name="prefix" value="/WEB-INF/views/" />
      <property name="suffix" value=".jsp" />
    </bean>
  </constructor-arg>
  <property name="tabletPrefix" value="tablet/" />
</bean>

但我的我们的应用程序只返回/myPage.jspx,从不返回/mobile/tablet页面。

我能怎么做?

谢谢!

4

1 回答 1

4

那是行不通的。UrlBasedViewResolver不管它是否存在,它总是返回一个视图。此外,您UrlBasedViewResolver总是首先被咨询,基本上使您LiteDeviceDelegatingViewResolver无用。

您还必须让您的移动视图使用 Tiles 并确保配置的前缀导致修改后的视图。我还建议使用TilesViewResolver便利子类,为您节省一些 XML。

<bean class="org.springframework.mobile.device.view.LiteDeviceDelegatingViewResolver">
    <constructor-arg>
        <bean class="org.springframework.web.servlet.view.tiles2.TilesViewResolver" />
    </constructor-arg>
    <property name="mobilePrefix" value="mobile/" />
    <property name="tabletPrefix" value="tablet/" />
</bean>

当然删除你的其他配置ViewResolver

于 2014-06-11T08:09:36.493 回答