2011-07-08 9 views
0

静的HTMLプロトタイプを作成するためにFaceletsを使用したいと思います。このプロトタイプは、Tomcatなどの実行中のWebアプリケーションサーバーを持たない人に送信されます。 Antビルド時にFaceletsサイトをコンパイルして、フラットなHTMLファイルにする方法はありますか?ビルド時にFaceletsサイトを構築するにはどうすればよいですか?

<!-- layoutFacelet.xhtml --> 
<ui:composition xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:ui="http://java.sun.com/jsf/facelets"> 
    <ui:insert name="content" /> 
</ui:composition> 

<!-- implementationFacelet.xhtml --> 
<ui:composition xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
    template="layoutFacelet.xhtml"> 
    <ui:define name="content"> 
     HELLO WORLD 
    </ui:define> 
</ui:composition> 

出力は、単一のHTML(例えば "implementationFacelet.output.html")になりますように::

他に
HELLO WORLD 

我々はこのような2つのFaceletsを持っている最も簡単な場合には

単語、Faceletsは、静的なフラットファイルプロトタイプを生成するために、レンダリング時ではなくビルド時に実行されます。

答えて

0

あなたの問題にすぐに対応できるソリューションについてはわかりません。しかし、私は現時点でfaceletのサポートを追加しているビルド時のJSF ELバリデーターの作業のおかげで、どのように実装できるか、かなり良い考えがあります。私は個人的に私の「value faking EL resolver」にpluging検討したい、それを行うには複数の方法がありますが、あなたは同様にうまく単に作ること -

  1. はEL式で使用されるバッキングBeanなどを設定します:私はこれを行うだろう
  2. UIViewRoot.encodeAllを経由してHTMLへのコンポーネントツリーをレンダリング(コンテキスト - JSFあなたのバッキングBeanを見つけ、somewhow必要なすべての値が手動でビューをコンパイルし、そのコンポーネントツリーを構築
  3. に設定されていることを確認することができますが(ExperimentalFaceletsElFinder.verifyExpressionsViaComponentTreeを参照実装)ことを確認してください) - org.apache.myfaces.view.faceletsを参照してください.FaceletViewHandler#renderView

これは実現可能ですが、以前はこれらのことをやっていない人にとってはおそらくあまりにも多くの仕事をしています。 Faceletsのサポートが終わったら、私はそのような機能をバリデーターに追加することを検討します。

よろしくお願いいたします。Jakub

+0

コードをお寄せいただきありがとうございます。この問題に対する既成の解決法はないと私は確信しています。実際に私はこの質問を数ヶ月前に投稿しましたが、最終的にはクライアントに、フラットファイルのZIPではなくURLを受け取ることに同意させてから、プロトタイプをホストする実行中のアプリケーションサーバーにアクセスできるようにしました。 – Kidburla

関連する問題