スキップしてメイン コンテンツに移動

[Velocity] parse したい HTML が Eclipse で文字化けするときの対策


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でも...あ、ありませんね。

それでは。


と、いろいろ考えてたらこういう方法に落ち着いたわけなんですが
もっとプラグインとかツールがちゃんとあるんじゃないかという気もしつつ...