Как я могу использовать распознаватель просмотра, чтобы вернуть мобильный или обычный вид?

У меня есть веб-приложение, и я хочу добавить в него мобильную версию..

Поэтому я следовал этому руководству, чтобы добавить 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 страницы.

Как я могу сделать?

Спасибо!

1 ответ

Решение

Это не сработает. 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,

Другие вопросы по тегам