gpt4 book ai didi

java - 如何使用 View 解析器返回移动或普通 View ?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:13:21 25 4
gpt4 key购买 nike

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

所以我关注了this guide添加 spring-mobile,但我无法获得我的移动 View ..

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

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

所以我试图设置一个 View 解析器来获取正确的页面。我使用 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 页面。

我该怎么办?

谢谢!

最佳答案

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

您还必须让您的移动 View 使用 Tiles 并确保配置的前缀导致修改后的 View 。我还建议使用 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

关于java - 如何使用 View 解析器返回移动或普通 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24157414/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com