2009年02月17日

faceletsでのコメントアウト

JBoss Seamでの開発はfaceletsが推奨されている。

よって、faceletsで作っていたのだけど問題勃発。

ことの発端はあるメソッドを削除したことから始まった。

メソッドを削除したから、page.xmlや、そのメソッドを呼び出しているxhtml内のEL式の部分などを合わせてコメントアウトした。

こんな感じ。

<!-- [<s:link id="delHogeEntry" value="削除" action="{#hogeAction.deleteHogeEntry()}" />] -->

直後に、deleteHogeEntry()が見つからないというエラーに遭遇した。

最初は古いクラスが残っているのかと思って、何度もリコンパイルしたり、JBoss AS内のEarファイルなども消しまくったのだけど進展せず。

何か深い問題でも起こったのかと思い、JBoss ASを削除して、新しく入れ直したりしたのだけど相変わらず。

途方に暮れてて、ふとコメント部分を削除してみた。そうするとうまく動作したのだ。

というわけで、古いクラスを参照している疑惑はなくなった。要はコメントアウトの方法がまずいのだ。

早速、調査。xhtmlのコメントアウトの方法は正しい。でも、なぜか有効になってる。

で、faceletsの説明ページに行ってみた。

すると、こんな説明が見つかった。

コンパイラにコメントをスキップさせるためのブーリアンの値(デフォルトはtrue)。
ページのコードをコメントアウトしても、タグはコンパイルされないがELはインラインと見なされて評価され
結果がドキュメント中に出力される。コメントをスキップさせると、ドキュメント中のすべてのコメントが削除される。


なるほど、EL式はコメントアウトしても評価されるんだ。。。

で、対応策は、Web.xmlにて

<context-param>
  <param-name>facelets.SKIP_COMMENTS</param-name>
  <param-value>true</param-value>
</context-param>

の追加を行うこと。

確かにこれで問題なくなった。

ただ、デフォルトtrueのはずなのになぜこんな現象が起きていたのだろう。。。

まあ、明示的に設定しろってことなのかな。


posted by hana at 20:22| Comment(0) | TrackBack(0) | JBoss Seam関連 | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。