JSPでお手軽マスターページ
穴埋め発掘ネタ。
Smart Web Layout
JSPでもASP.NETのマスターページのように、共通部分はテンプレートを使用してレイアウトしたいよね、っということで。
Javaの場合、この用途にはTilesやSitemeshがあるわけですが(・ω・)
でも、設定ファイルとか使いたくねーし、JSPだけで完結してーし( ゚д゚)、ッ…っというニーズのための、お手軽レイアウトライブラリを作ったので下記で公開。
https://github.com/usausa/Java-Smart-WebLayout
使い方
公開しているサンプルはTomcatプロジェクトになっているので、とりあえず動作確認はできると思いますが。
使用例として見るのは、個別ページ部分のindex.jspとテンプレートのmaster.jsp。
まずindex.jspについて。
<layout:master template="master"> <layout:parameter key="title" value="ホーム"/> <layout:content name="body"> ページ固有のコンテンツ </layout:content> </layout:master>
テンプレートで置換する部分を
また、個別ページからテンプレートにパラメータとして渡したい項目は
次にマスターページのmaster.jspはこんな感じで。
<!doctype html> <html lang="ja"> <head> <meta charset="utf-8"> <title><layout:value key="title"/></title> </head> <body id="body"> <h1><layout:value key="title"/></h1> <div id="main"> <layout:place name="body"/> </div> </body> </html>
個別ページのコンテンツで置換したい部分は
また、
っで、実際にindex.jspの処理が行われると、ページが合成されて出力は下記の様になりますだ(・ω・)
<!doctype html> <html lang="ja"> <head> <meta charset="utf-8"> <title>ホーム</title> </head> <body id="body"> <h1>ホーム</h1> <div id="main"> ページ固有のコンテンツ </div> </body> </html>
共通テンプレートを使ったレイアウトが出来ていますね(・∀・)
タグ一覧
タグの一覧を簡単に解説。
master
個別ページで使用。
このタグ部分がマスターページで置換される。
templateで属性マスターページとして使うJSPを指定。
content
個別ページで使用。
マスターページ内に合成されるコンテンツを記述。
name属性でマスターページにおけるプレースホルダの場所を指定。
parameter
個別ページで使用。
マスターページに引き渡すパラメータをkey属性とvalue属性で指定。
place
マスターページで使用。
個別ページで記述したcontentの内容が合成される部分のプレースホルダを指定。
value
マスターページで使用。
個別ページで指定したparameterの内容を使用。
key属性で指定した内容の出力、またはvar属性が指定された場合は変数への設定。
partial
どこでも使用。
Smart Web Layoutライブラリではweb.xml中で下記の様なパラメータを指定した場合、ビューの記述の省略が可能。
<context-param> <param-name>smart.web.layout.PREFIX</param-name> <param-value>/WEB-INF/views/</param-value> </context-param> <context-param> <param-name>smart.web.layout.SUFFIX</param-name> <param-value>.jsp</param-value> </context-param>
この設定であれば、template="master"のような記述で実際に使用されるjspは/WEB-INF/views/master.jspとなる。
partialタグは上記に対応したinclude処理のSmart Web Layout版。
っというわけで、このレイアウトタグライブラリはお手軽&ピュアJSPなのでその他のライブラリと組み合わせ自由という感じなのですが、どうでしょう(・ω・)?