質問

Java Web開発の世界でマスターページに相当するものは何ですか? Tiles、Tapestry、Velocityについて聞いたことがありますが、それらについては何も知りません。マスターページと同じくらい使いやすいですか?

1つのテンプレートを設定するだけで簡単になり、その後のページはテンプレートから派生し、マスターページと同様にコンテンツ領域をオーバーライドします。

どんな例でも素晴らしい!!

役に立ちましたか?

解決

最初に、JavaのASP.Netに相当するものは、あなたが言及したもの(Tiles、Tapestry、Velocity)などのWebフレームワークになります。

マスターページを使用すると、マスターテンプレートに挿入されるコンテンツの観点からページを定義できます。

マスターページはASP.Net(.Net Webフレームワーク)の機能であるため、Java Webフレームワークのマスターページに似た機能を探しています。

http://tiles.apache.org/framework/tutorial/basic /pages.html は、TilesとJSPを使用して、Java WebフレームワークであるStrutsに似たものを実装する基本的な例を示しています。この場合、マスターページ機能はStrutsのプラグインです。

Velocityは汎用のテンプレートエンジンであり、Webページに特化しておらず、必要以上に複雑です。 (コード生成に使用されるのを見てきました。)

TapestryはTileよりもフル機能のWebスタックであり、おそらく目的に適しています。テンプレート機能には、コンポーネントを作成し、その中にすべての一般的なマークアップを含めることが含まれます。例は http://www.infoq.com/articles/tapestry5-intro。

これの詳細は、選択するJava Webフレームワークによって異なります。

他のヒント

フェイスレットもチェックアウトする必要があります。 DeveloperWorksには優れた入門記事があります。

Facelets <ui:insert/>タグは、マスターページで使用されるASP.NET <asp:ContentPlaceHolder/>タグに相当します。ページのその領域にデフォルトのコンテンツを提供できますが、これはオーバーライドできます。

別のページのFaceletsテンプレートに入力するには、テンプレートファイルを指す<ui:composition/>要素から始めます。これは、ASP.NETページでMasterPageFile属性を宣言することとほぼ同等です。

<ui:define/>要素の内部で、<asp:Content/>タグを使用する方法と同様に、<=>要素を使用してテンプレートのデフォルトをオーバーライドします。これらの要素には、単純な文字列からJSF要素まで、あらゆる種類のコンテンツを含めることができます。

だから、すべてをまとめる...

master.xhtml 内:

<!-- HTML header content here -->
<ui:insert name="AreaOne">Default content for AreaOne</ui:insert>
<ui:insert name="AreaTwo">Default content for AreaTwo</ui:insert>
<!-- HTML footer content here -->

page.xhtml 内:

<ui:composition template="/WEB-INF/templates/master.xhtml">
  <ui:define name="AreaOne">Here is some new content</ui:define>
  <ui:define name="AreaTwo">
    <p>Some new content here too</p>
  </ui:define>
</ui:composition>

そして、これは次のようにレンダリングされます:

<!-- HTML header content here -->
Here is some new content
<p>Some new content here too</p>
<!-- HTML footer content here -->

Faceletsには、さまざまなデータでページコンポーネントを再利用する機能など、その他の利点もあります。

(詳細情報を提供するために編集。)

以前のプロジェクトで sitemesh を使用しましたが、設定は非常に簡単です。基本的に、マスターページに相当するデコレータを作成します。次に、どの子ページがどのデコレータを使用するかを定義します。詳細については、 sitemeshの紹介を参照してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top