Apache Velocity で html を #parse する際、#parse 対象のファイルについて
Eclipse がテンプレートファイルの文字コードを正しく認識してくれないことがあります。
これを解決する方法です。
分かりにくいと思うので例を挙げて説明します。
例)
次のように、a.html に #parse("b.html") を記述します。
- a.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>これは正しく認識してくれる</title>
</head>
<body>
<p>へっだ</p>
#parse("b.html")
<p>ふった</p>
</body>
</html>
- b.html
<p>めいん</p>
このとき b.html を Eclipse で開くと、文字化けすることがあります。
b.html にはエンコードを記述していないので当然です。
では b.html にエンコード指定すれば良いかというと、そうはなりませんよね。
- b.html
<meta charset="UTF-8">
<p>めいん</p>
こんなものを #parse したら出力される HTML がおかしくなります。
Eclipse では文字化けしませんが
開発環境のためだけにこんなことはしたくありません。
ではどうしたら良いか?
私はこうしています。
- b.html
#*
<meta charset="UTF-8">
*#
<p>めいん</p>
分かりますでしょうか?
#parse でインクルードしたくない部分を
Velocity のコメントアウトで記述しています。
#parse はコメント部分を無視しますので
<p>めいん</p>
の部分だけがインクルードされる、というわけです。
まぁもうちょっときちんと書きたければこんな感じでしょうか。
- b.html
#*
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>インクルードされるファイルです</title>
</head>
<body>
*#
<p>めいん</p>
#*
</body>
</html>
*#
ここまですれば構文エラーも出ないか減りますね。
以上、いかがでしょうか?
問題が解決した!おもしろい!なんていう方がいらしたら
+1でもしてやってください。
つまらんぞ!全然解決しないぞ!っていう方は
-1でも...あ、ありませんね。
それでは。
と、いろいろ考えてたらこういう方法に落ち着いたわけなんですが
もっとプラグインとかツールがちゃんとあるんじゃないかという気もしつつ...