やたらめんどくさいテンプレート

Struts2のUIはtheme単位でくくられてるらしく。
標準はxhtmlテーマ。
こやつは画面を再描画する際、Tableタグでコンポーネントを配備してくれるので、ぢみにいただけない。
Submit、Cancelボタンが縦に並ぶとかありえねぇw
で、従来どおり?なのはsimpleテーマ。
このテーマを使うと自分でレイアウトをいぢることが可能。
それでもやっぱりxhtmlテーマが使いたい、でもレイアウトは自分で決めたい。となると自前のテーマを作るしかない。
テーマを作るには必要なコンポーネント(input, textなど)の描画用templateを作成する必要があり。
これがたいそうめんどくさい。

templateの作成

クラスパスの通ったところに /template/<theme> を作成する。
「<theme>」は作成するテーマの名前。
その中に theme.properties を作成する。
これは全部のタグについてテンプレートを作成するのはしんどいので、親となるテーマを継承することができる。

parent=xhtml

これだけ。
親(継承元)のテーマ名を記述する。
Struts2で提供されているのは「ajax」「simple」「xhtml」「css_xhtml」。
あとはstruts2タグ名に対応したテンプレートを作成していく。
デフォルトのテンプレートエンジンはFreeMakerになっているので、記述書式はFreeMakerに習う。

テーマを適用する。

テーマを個別に適用する場合にはのようにtheme属性があるのでそこにテーマを書けばよい。
全体的にテーマを適用する場合には、struts.xmlに以下を追加する。

<struts>
  <constant name="struts.ui.theme" value="custom_theme" />
</struts>


かなり手抜きなのは正直微妙というかめんどくさいとしか思えなかったからで…。
調べるのにあたってはこちらのサイトさんを参考にさせていただきました。
(・ω・)Serendipity


普段、simpleを使ってcssでレイアウトきったほうがよっぽど早い気がした。
むしろtilesとか使えないもんなのかなぁと思ってみたり。


Google先生にきいてみたら、あっさり発見。
struts2-tiles-pluginがあって連携できるぽいw
Tiles を使ってみる - chuchieの日記