2008-08-25 11 views
6

Java Web開発の世界でMaster Pagesはどのようなものになるでしょうか?私はタイルズ、タペストリー、ベロシティについて聞いたことがあるが、それらについて何も知らない。マスターページと同じように使いやすいですか?JavaでASP.NETマスターページに相当する

マスターページと同様に、1つのテンプレートとそれに続くページがテンプレートから派生し、コンテンツ領域をオーバーライドするように簡単にしたい。

いずれの例も素晴らしいでしょう。

答えて

4

まず、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は一般的なテンプレートエンジンです。ウェブページに特化していないし、必要以上に複雑です。 (コード生成に使用されているのを見たことがあります)

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

具体的な内容は、選択するJava Webフレームワークに基づいて異なります。

12

Faceletsもチェックしてください。 DeveloperWorksにはgood introductory articleがあります。

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

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

<ui:composition/>要素の内部には、<asp:Content/>タグの使用方法と同様に、<ui:define/>要素を使用してテンプレートの既定値を上書きします。これらの要素には、単純な文字列からJSF要素までのあらゆる種類のコンテンツを含めることができます。 ページで

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

master.xhtmlで...一緒に

をそれをすべて持って来るので

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

そして、これのようにレンダリングされます:あなたはまた、別のデータをページのコンポーネントを再利用する機能としてFaceletsといくつかの他の利点を、取得

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

(より多くの情報を提供するために、編集。)

2

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

関連する問題