Как я могу использовать распознаватель просмотра, чтобы вернуть мобильный или обычный вид?
У меня есть веб-приложение, и я хочу добавить в него мобильную версию..
Поэтому я следовал этому руководству, чтобы добавить 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
,