はじめてのTapestry

はじめてTapestryを触りました。
Strutsがあまり好きになれず、これまで触ったことが無かったので(とは言っても「利用していない」という意味であり、ソースを覗いたことはある)、有名なWebアプリケーションフレームワークを触るのはこれが初めて。(先にEchoを触ったけどこれは「有名」じゃないしねぇ)
何だかStrutsよりかは好きになれそう。
早速、Tapestryの売りである「デザイナーと開発者の分離」を実感するべく簡単なアプリを作成してみました。
……が、いきなりCSSファイルの置き場所に困る。
Spindleのデフォルトではテンプレートが「WEB-INF」の下にある。
普段はCSSファイルをコンテキストルート直下に置いているため、Web上で正しく見えるように<link>タグを設定しても、直接HTMLファイルを開いたときにはCSSが適用されなくなってしまう。
かと言って、テンプレートをユーザの見える場所に置くのも嫌だしねぇ。
その後、しばらく思案して「別にデザイナーと開発者は同じフォルダ構成で作るわけではないらしい」という結論に至る。
いいです。デザインするときはCSSファイルをテンプレートと同じフォルダに入れておきます。はい。
これで無事「デザイナーと開発者の分離」が完了!……と、思いきや、なんか、Web越しで見たときと直接開いたときでフォントが違うんですけど……。
CSSは適用されているように見えるのに。
なんとなくエンコードの問題かなーっと言うことでそれぞれのエンコードを見てみたところビンゴでした。
直接開いた方は「シフトJIS」、Web越しの方は「UTF-8」。
エンコードの違いでフォントが変わってくる辺りはいまいち納得がいかないが、ひとまずどちらかに寄せれば良いらしい。
ということで、「XXX.application」の<application>の中に<property>を入れ、プロパティ「org.apache.tapestry.template-encoding」とプロパティ「org.apache.tapestry.output-encoding」にエンコードを指定しました。
開発環境が「シフトJIS」ベースだから前者は「Windows-31J」に決定。後者は「UTF-8」の方が無難かなと思いつつ惰性で「Windows-31J」にしてしまう。
上記作業で無事フォントも同じ表示になりました。
エンコードの違いでフォントまで違ってくるところが重ね重ね腑に落ちない。言語セットが別物で認識されたのか?)
この作業中に見たドキュメント「TapestryUsersGuide character-set」で「Home_ru」という記述を発見。
プロパティファイル見たいな感じでロケールを変更できるのね。
気が向いたら「Home」と「Home_ja」に分けてみよう。