ひがやすを技術ブログ

電通国際情報サービスのプログラマ

Slim3 StrutsのHTMLテンプレート

SAStrutsにはMayaaがあるので、HTMLテンプレートは用意していませんが、Slim3 Strutsでは、Mayaaの英語でのサイトが用意できないということなので、独自にHTMLテンプレート機能を持たせます。
方式は、Teeda(idによる規約)ともFacelets(jsfc独自属性)とも違って、プレーンなHTMLをそのままJSPのタグに変換します。
例えば、足し算のサンプルはこんな感じ。

<html:errors/>
<form>
<input type="text" name="arg1"/> +
<input type="text" name="arg2"/>
= ${result}<br />
<input type="submit" name="submit" value="submit"/>
</form>

これがコンパイルされて下記のように変換されます。

<html:errors/>
<s:form>
<html:text property="arg1"/> +
<html:text property="arg2"/>
= ${f:h(result)}<br />
<input type="submit" name="submit" value="submit"/>
</s:form>

動的に変える部分は、JSPと同様に${EL式}で指定します。<input type="text" .../>は、自動的にhtml:textタグに変換されますが、<html:text ...>のようにJSP形式で指定することも可能です。


素のHTMLのままで出力して欲しい場合は、class属性の値をkeepにします。モック用でランタイム時には出力して欲しくないタグはclass属性の値をmockにします。


${}の結果が文字列だった場合は、自動的にHTMLエスケープするので、XSSの対策もバッチし(HTMLエスケープ漏れがない)です。もし、HTMLエスケープして欲しくないときには、<c:out value="${xxx}" espcapeXml="false"/>とします。