JSPにおけるカスタムタグの優位性

JSPのカスタムタグについてそういえばもう一つ重要な機能があったことを思い出した。

それはカスタムタグでは必要なパラメータの検証ができるということだ。


以前からテンプレートからBuilderを作るようなフレームワークが欲しいとおもっていた。

例えば擬似コードで書くと以下のような感じだろうか。


テンプレートは以下のようになる。

<builder type="SomeTemplate">
<args>
  <arg name="author" type="java.lang.String" />
  <arg name="titile" type="java.lang.String" />
  <arg name="update" type="java.util.Date" />
</args>
<template>
 <html>
  ... この中にargを使ったテンプレートを作る。
 </html>
</template>
</builder>

テンプレートを事前にコンパイルして以下のようにSomeTemplateクラスを作成して使う。
テンプレート内でもしargにないものがあれば、それはコンパイルできない。

SomeTemplateBuilder builder = new SomeTemplateBuilder();
builder.setUpdate(new Date())
       .setAuthor("tinsep19")
       .setTitle("The Title").render();


これまでのテンプレートはだいたいmapを引数にとるけど、それでは十分なパラメータが提供されているかが明らかじゃない。

先にテンプレートを作ってその中に必要なパラメータは十分かどうか検証できてないとおもっていた。


おそらくplayのような黒魔術動的フレームワークかIDEの支援がないと開発しにくいと思うけど、こういうのなら上記のようなBuilderパターンならrender内でパラメータのチェックを行うことができるだろう。

それでも開発時に静的に検出はできず、ユニットテストで行うことになるのだろうけど、それでもテストの可能性はすごくあがると思う。

JSPカスタムタグはそれを超えていたEclipseならカスタムタグは書いてる時に補完してくれたし、必要なパラメータがないと警告がでた。

開発時にはこれがかなり重要だとおもっていて、最近さらにそう思うようになってきた。



開発スタイルとしてもまずは画面のモックをつくるところからスタートするのであれば、こちらのほうがよいとおもうのだ。