web-dev-qa-db-ja.com

Apacheタイルのより良い代替

Apache Tilesよりも優れていて使いやすいフレームワークを探しています(これまでに数回使用しました)。

Tilesを使用すると、100個のアクションがある場合、100個のjspファイルを作成し、tiles.xmlに100個の定義を作成する必要があるようです。

テンプレートを管理するためのより良いフレームワークはありますか?たとえば、2つのテンプレートを作成したいと思います。

a)コンテンツのメニューと列
b)メニュー、コンテンツの列、バナー付きの右の列

どちらのテンプレートでも、メニューは一定です。 template bでは、右側の列が一定であるため、コンテンツ列のみが異なります。この簡単な例では、I したくないtemplate aを拡張する各JSPファイルを定義します(ボディを提供します)。それはラメイモです。あるいは、私は足が不自由で、Apache TilesでDEFAULTテンプレートを定義できますが、それを正しく使用していません。いずれにせよ、すべての助けに感謝します。

17
Fixus

最終的にJSF + Faceletsを使用しました。私はそれらをSpringMVCと組み合わせましたが、それは魅力のように機能します。

5
Fixus

全体として、タイルよりも SiteMesh をお勧めします。

こちら SiteMesh3の設定方法

ページはめ込みテンプレートにはタイルを使用できますが、サイト全体のテンプレートにはSiteMeshを使用します。それにもかかわらず...

タイルの吸啜を少なくする方法:

  1. 設定より規約を使用します。たとえば、定義をwebapp/WEB-INF/tiles.xmlに入れれば、タイルにそれがどこにあるかを伝える必要はありません。

  2. ワイルドカードを使用する:

<definition name="default" template="/WEB-INF/templates/default.jsp">
    <put-attribute name="titleKey" value=""/>
    <put-attribute name="body" value=""/>
</definition>

<definition name="*" extends="default">
    <put-attribute name="titleKey" value="{1}.title"/>
    <put-attribute name="body" value="/WEB-INF/views/{1}.jsp" />
</definition>

コントローラがビュー名indexを返す場合、それは定義*と一致し、本文にJSPファイル/WEB-INF/views/index.jspを使用し、メッセージプロパティindex.titleを使用します。

コントローラがビュー名contact-usを返す場合、それは定義*と一致し、本文にJSPファイル/WEB-INF/views/contact-us.jspを使用し、メッセージプロパティcontact-us.titleを使用します。

テンプレートに次を追加します。

<c:set var="titleKey"><tiles:getAsString name="titleKey" /></c:set>

そして

<title><spring:message code="${titleKey}"/></title>

サーブレットアプリケーションコンテキストにReloadableResourceBundleMessageSourceBeanを追加します。

次のような内容のファイルを/src/main/resources/messages.propertiesにします。

index.title = Welcome to Acme, Inc.
contact-us.title = Contact Us
15
Neil McGuigan

this と同様)

すべてのアクションに定義は必要ありません。

この定型的な構成は、タイルからのハングアップです-1日。ワイルドカードが導入されたときのtiles-2、特に、OptionsRendererと一緒のtiles-3では実際には必要ありません。

ここに チュートリアル があります

  • 春からタイルへの統合、
  • ワイルドカードを使用した定義、
  • optionsRendererを使用してフォールバックパターンを実装し、
  • 定義構成。
7
mck

他のアプローチは Sitemesh です。オリジナルを変更できないビューをメッシュ化するように設計されているため、Tilesのようなテンプレートフレームワークというよりもhtml変換/装飾フレームワークです。

私の個人的な意見では、タイルはアプリケーションのより良いアプローチであり、xmlファイルを時代遅れにするある種のリゾルバー(いくつかの命名規則に基づく)を実装しようとしますが、これはそうではありませんでした質問。

@See: この古い紹介 はSiteMeshがどのように機能するかを示しています。

7
Ralph