ひがやすを技術ブログ

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

Layoutその2(仕様案)

S2JSFの場合、Viewのコンポーネントの考え方は、Mayaのようなtaglibというわけではなく、includeの延長なので、やはり、仕様は、Tilesっぽくしたいと思います。
Tilesはinsertで定義してputで上書きしますが、S2JSFはinsertで定義も上書きもするところが違います。後は、TilesにはTilesのスコープがありますが、S2JSFは、insertされるページに、そのような特殊なスコープはなく、request,session,application,containerを利用する形になります。JSFの場合、requestのパラメータの名前は、JSFが適当につける(id0:id1とか)ので、パラメータ名が衝突することはないと思っているためです。id0は、formなどのネーミングコンテナのidです。
ということをふまえて次のように考えています。


layout.html


<html xmlns:m="http://www.seasar.org/maya">
<meta http-equiv="Content-Type" content="text/html; charset=Windows-31j" />
<head>
<title><span m:value="#{title}"/></title>
</head>
<body>
<table border="0" width="100%" cellspacing="5">
<tr>
<td colspan="2"><span m:inject="s:insert" m:src="header.html"/></td>
</tr>
<tr>
<td width="140" valign="top">
<span m:inject="s:insert" m:src="menu.html"/>
</td>
<td valign="top" align="left">
<span m:inject="s:insert" m:name="body"/>
</td>
</tr>
<tr>
<td colspan="2">
<hr>
</td>
</tr>
<tr>
<td colspan="2">
<span m:inject="footer.html"/>
</td>
</tr>
</table>
</body>
</html>
継承してパラメータを上書きすることも出来ます。

hoge.html


<html xmlns:m="http://www.seasar.org/maya" m:extends="layout.html">
<span m:inject="f:param" m:name="title" m:value="hogeタイトル"/>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-31j" />
<head>
<title>hogeどうせ無視される
</head>
<body>
この辺に適当に書いても実行時には無視される
<span m:inject="s:insert" m:name="body">
ここに個別のページの内容を記述
</span>
この辺に適当に書いても実行時には無視される
</body>
</html>
header.html,menu.html,footer.htmlはbodyタグの中身がinsertされることとします。