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"/>とします。