我有一个网络应用程序,我想要添加移动版本..
所以我跟着this guide添加了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>
但我的we-app仅返回/myPage.jspx
,而不会返回/mobile
或/tablet
页。
我该怎么办?
谢谢!
答案 0 :(得分: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
。