1

スプリングモバイルタイルとapacheタイルを使用して新しいアプリケーションをセットアップしました。これらのタイル記述子を使用して、ターゲットプラットフォーム間でビューコンポーネントを再利用できるようにします。誰かがすでにこれを行っており、アプリケーションを構造化するための最良の方法であるかどうか疑問に思っています。過去にタイルを操作すると、タイル記述子がすぐに追加され、モバイルとタブレットがミックスに追加され、簡単に2倍の数になる可能性があります。

WEB-INF/layout/tiles.xmlこれまでのところ、この領域に3つのレイアウトを持つマスタータイル定義があります。

<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>

私は構成mobileSuffixし、tabletSuffix反対しLiteDeviceDelegatingViewResolverているので、コントローラーに大きな頭痛の種はありませenableFallbackん。これは、モバイルビューの定義を提供しない場合でもうまく機能するように設定されています。

タイル構成で同様のことを行う方法はありますか?つまり、ビュー名がで終わる場合は、それを複数回定義する代わりに.mob使用しますか?layoutMobile

4

1 に答える 1

0

私は単に次のことをしました:

applicationContext.xml に追加

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

tilesDefinition.xml に追加

nb には 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";     
  }
}

私はモバイルのみを使用していますが、モバイルまたはタブレットで動作するように微調整できるはずです。

これが役立つことを願っています。

于 2013-02-28T19:32:23.910 に答える