【问题标题】:Is there a simple way to mix spring-mobile and apache-tiles to help use common elements?有没有一种简单的方法来混合 spring-mobile 和 apache-tiles 来帮助使用公共元素?
【发布时间】:2013-02-19 15:54:01
【问题描述】:

我刚刚使用 spring-mobile 和 apache-tiles 设置了一个新应用程序,我打算使用 tile 描述符来帮助我在目标平台之间重用视图组件。我想知道是否有人已经这样做了,以及构建应用程序的最佳方式。过去使用图块时,图块描述符加起来非常快,将移动设备和平板电脑添加到组合中,我可以轻松拥有两倍。

到目前为止,我有一个主图块定义WEB-INF/layout/tiles.xml,在这个区域有三个布局:

<tiles-definitions>
    <definition name="layoutStandard" template="/WEB-INF/layout/standard.jsp"/>
    <definition name="layoutMobile" template="/WEB-INF/layout/mobile.jsp"/>
    <definition name="layoutTablet" template="/WEB-INF/layout/tablet.jsp"/>
</tiles-definitions>

然后查看定义。

<tiles-definitions>
    <definition name="home" extends="layoutStandard">
        <put-attribute name="body" value="/WEB-INF/views/home.jsp" />
    </definition>
    <definition name="home.mob" extends="layoutMobile">
        <put-attribute name="body" value="/WEB-INF/views/home.mob.jsp" />
    </definition>
    <definition name="home.tab" extends="layoutTablet">
        <put-attribute name="body" value="/WEB-INF/views/home.tab.jsp" />
    </definition>
</tiles-definitions>

我已经针对LiteDeviceDelegatingViewResolver 配置了mobileSuffix 和tabletSuffix,因此我的控制器并没有太多令人头疼的问题,如果我不提供移动视图定义,它也有enableFallback 设置,它工作得很好。

有没有办法可以对瓷砖配置做类似的事情?即如果视图名称以.mob 结尾,那么使用layoutMobile 而不必多次定义它?

【问题讨论】:

    标签: tiles spring-mobile


    【解决方案1】:

    我只是做了以下事情:

    添加到 applicationContext.xml

    <mvc:interceptors>
        <bean class="org.springframework.mobile.device.mvc.DeviceResolvingHandlerInterceptor" />
    </mvc:interceptors>
    

    添加到 tilesDefinition.xml

    n.b.需要tiles.el.jar

    <definition name="store" templateExpression="/jsp/home${layout}.jsp">
    ...
    <definition name="page" extends="store">
    ...
    

    添加到控制器

    我为所有控制器使用一个方法,该方法为我的所有页面类型获取默认数据。

    if (!device.isNormal() || sitePreference.isMobile()) {
      if (!sitePreference.isNormal()) {
        layout = "-mobile";     
      }
    }
    

    我只使用手机,但您应该可以对其进行调整以适用于手机或平板电脑。

    我希望这会有所帮助。

    【讨论】:

    • 嗨,托比,LiteDeviceDelegatingViewResolver.mobileSuffix 是否足以让您不需要支票?我可以使用 EL 方法,但这意味着我不能使用回退,对吗?
    • 我的'layout'特性只在需要移动视图时设置,否则为空字符串。对于更动态的配置,您始终可以使用 java 配置,例如 forum.springsource.org/…
    猜你喜欢
    • 2011-04-12
    • 2011-04-10
    • 1970-01-01
    • 1970-01-01
    • 2015-08-04
    • 1970-01-01
    • 1970-01-01
    • 2011-07-05
    • 2014-03-11
    相关资源
    最近更新 更多