Struts2如何为移动和桌面创建多个视图

我正在创建一个可通过移动设备和桌面设备访问的网站。 所以我想创建我的应用程序的2个视图。 我的行动代码和后端(管理员,DAO)中的其他一切都是一样的。 只是JSP改变了两者。

我如何通过Struts 2做到这一点?


在struts中有很多方法可以获得同样的结果。 在这种情况下,我更喜欢的是:您可以编写一个拦截器,用于根据客户端的用户代理更改返回代码,以便为每个jsp提供PC和移动版本。 在你的配置中,你需要拥有所有jsp的所有结果代码(或者你可以简单地通过通配符映射来定义结果)。 例如:将结果代码从“成功”更改为“mobile_success”。 如果你想将两个结果映射到同一个jsp中,就可以像前面所说的那样映射<result name="*success">


不确定是否有用于struts 2自动执行此类任务的库。但如果有,使用这样的库可能会更好

无论如何,这里是理论。 每个浏览器都有自己的“签名”写在请求头中,称为“用户代理”。 不同的浏览器(据说)有不同的用户代理。 例如,我的firefox用户代理如下:Mozilla / 5.0(Windows NT 6.0; rv:5.0)Gecko / 20100101 Firefox / 5.0 FirePHP / 0.5

基本上,通过检测用户代理,你可以知道用什么浏览器访问你的网站。 移动浏览器用户代理的列表可以在http://www.zytrax.com/tech/web/mobile_ids.html找到

如果我没有错,你可以通过httpServletRequest.getHeader(“User-Agent”)检索服务器中的用户代理; (如我错了请纠正我)

你可以创建一个拦截器来决定客户端是来自移动设备还是来自桌面。 该拦截器可以针对不同的客户端类型返回不同的结果。 例如,如果客户端是桌面,则可以返回“successDesktop”,如果客户端是移动的,则可以返回“successMobile”。

好吧,希望别人能够提出(远)更简单的解决方案


我目前正试图解决这个相同的问题。 一个框架会很好,如果有人测试并批准了一个框架,我就会全神贯注。 也就是说,我找不到任何足够成熟的东西来证明从Struts移动视图的合理性。

我现在最好的解决方案是为整个页面的每个部分创建操作,这些操作将在完整的浏览器上显示。 然后重新使用这些操作在移动端显示页面片段。

我发现试图让一个页面看起来适合用于桌面浏览器,而一个移动浏览器同时不是一种可持续的方法。

jQuery手机看起来像一个非常有前途的库,用于对由struts检索的元素进行样式设计。

所以虽然肯定有可能将这两个版本的网站塞进一个动作中,但我认为花时间创建可重复使用的小动作会导致jsp snippits在您的应用程序扩展时获得回报。

以下是近期的一些可能性:

(我无法将这些链接添加为链接,因为我没有足够的声誉...您必须添加'http:// www')

Struts2 jQuery Mobile项目主页:http://code.google.com/p/struts2-jquery/

Struts2 jQuery Mobile项目:code.google.com/p/struts2-jquery/downloads/detail?name=struts2-jquery-mobile-showcase-3.1.1.war

struts2 jQuery Mobile的一个例子:weinfreund.de/struts2-jquery-mobile-showcase/index.action

@fajrian - 随着越来越多的移动和桌面浏览器的发布,使用“用户代理”来确定浏览器类型可能会变得非常痛苦。 更好的方法是根据窗口的尺寸确定是否显示移动版本或完整版本。 一个完美的例子。

编辑 - 查看CSS3媒体查询。

链接地址: http://www.djcxy.com/p/53593.html

上一篇: Struts2 how to create multiple views for mobile and desktop

下一篇: python class that acts as mapping for **unpacking