レイアウトの継承とViewのコンポーネントの仕様案
基本的に、makotan案ベース。
まず、Viewのコンポーネントですがinsertタグを使ってコンポーネントを読み込みます。paramタグでパラメータも渡せます。paramタグだけではなく、request,sessionのattributeで渡すことも出来ます。
次にレイアウトの継承ですが、htmlタグのextends属性とinsertタグのオーバーライドを組み合わせます。insertタグでは、src属性のかわりに、name属性を指定し、継承先でオーバーライドできるようにします。src属性を指定してもOKで、継承先で上書きしても良いし、上書きせずにそのまま使うことも出来ます。継承先のinsertで上書きするときに、子タグで直接タグを記述せずにsrc属性でファイルを指定することもできます。
<span m:inject="s:insert" m:src="myComponent.html">
<span m:inject="f:param" m:name="hoge" m:value="#{myvalue}/>
</span>
parent.html
...
<span m:inject="s:insert" m:name="aaa">
レイアウト確認用のダミー
</span>
...
child.html
継承はもちろんネスト可能で、最後に上書きしたものが、最終的なHTMLに反映されます。
<html m:extends="parent.html">
...
<span m:inject="s:insert" m:name="aaa">
aaaという名前のブロックをこの内容でオーバーライド
src属性で別のファイルに外だししても良い
</span>
...
</html>
上書きするには、同一のname属性を指定します。insertタグの上書きでparamだけを上書きすることも可能です。
parent.html
...
<span m:inject="s:insert" m:name="aaa" m:src="myComponent.html">
<span m:inject="f:param" m:name="hoge" m:value="#{myvalue}/>
</span>
...
child.html
いい感じ。
<html m:extends="parent.html">
...
<span m:inject="s:insert" m:name="aaa">
<span m:inject="f:param" m:name="hoge" m:value="#{myvalue2}/>
</span>
...
</html>
thx.
makotan