TERASOLUNAフレームワークの応用
前回の「iBATISのORMとSpringのAOPを活用したDBアクセス 」までで、TERASOLUNA Server Framework for Java Web版(以下、TERASOLUNAフレームワーク)の基本的な仕組みを使ってみました。今回からは応用編として、TERASOLUNAフレームワークが持っているWebアプリケーション開発に便利な機能を紹介します。
今回紹介する機能はDB検索結果の一覧表示機能です。これまでと同様に、実際にWebアプリケーションを構築しながら機能を使っていきましょう。
構築環境について
いままでの連載と同じく、TERASOLUNAフレームワークのブランクプロジェクトを使用します。連載第3回で作成したプロジェクトでも問題ありません。
DBはHSQLDBを使用します。前回紹介したhsqldb.zipを解凍してインストールすると、「USERLIST」というテーブルがありますので、これを利用します。インストールや設定の方法などは前回の記事を参照してください。
フィールド名
データ型
サイズ
制約
ID
BIGINT
-
非NULL
NAME
VARCHAR
50
-
AGE
VARCHAR
3
-
BIRTH
VARCHAR
10
-
表 USER_LISTテーブルの仕様(※BIRTH列は今回は使用しません)
DBの照会結果画面を簡単に作成できる「一覧表示機能」
多くのWebアプリケーションには、データベース(以下、DB)を照会して結果を表示する画面があります。普通は、1ページに全結果を表示するのではなく、以下のような画面にします。
図1 DB照会結果の画面例(※ ページリンク:「1 2 3 4 …」などの、ほかの照会結果ページ遷移用リンクのことを、TERASOLUNAでは「ページリンク」と呼んでいます)
・照会結果を(1ページ当たりの表示行数に応じて)複数ページに分割する ・ほかの照会結果ページへのリンクを張る
TERASOLUNAフレームワークには、このような画面を簡単に作成できる「一覧表示機能」が用意されています。この一覧表示機能を使って、USERLISTテーブルを照会する「ユーザー一覧画面」を作ってみましょう。
サンプルの実装概要
一覧表示機能には、いくつかの実装方式がありますが、今回は以下のような実装にします。
ページリンクをクリックすると、以下の情報をリクエストする
開始インデックス(全照会結果の何番目から取得するか)
1ページの表示件数(何レコード取得するか)
業務ロジックはリクエストされた情報でDBを検索して、照会結果を返す
図2 サンプルの実装概要
追加・変更するファイル
ブランクプロジェクトに追加・変更するファイルは、以下のとおりです。
図3 追加・変更するファイル
ユーザー一覧を表示するための情報を定義
一覧表示するための情報として、Struts設定ファイルのアクションフォーム定義に以下を追加します。
リスト1 struts-config.xml(form-bean要素)
<form-bean name="_form"
type="jp.terasoluna.fw.web.struts.form.DynaValidatorActionFormEx">
<!-- 【1】 -->
<form-property name="startIndex" type="java.lang.String" initial="0"/>
<!-- 【2】 -->
<form-property name="row" type="java.lang.String" initial="10"/>
<!-- 【3】 -->
<form-property name="users" type="sample2.UserBean[]" />
<!-- 【4】 -->
<form-property name="totalCount" type="java.lang.String"/>
</form-bean>
・【1】 データの開始インデックス(全照会結果の何番目から必要か) ・【2】 1ページ表示件数(何レコード取得するか) ・【3】 1ページ分の照会結果データ ・【4】 全データ件数
ユーザー一覧画面(list.jsp)には、照会結果を表示する一覧表と、ページリンクを記述します。
リスト2 list.jsp
<%@ page contentType="text/html; charset=Windows-31J"%>
<%@ taglib uri="/struts-html" prefix="html"%>
<%@ taglib uri="/struts-bean" prefix="bean"%>
<%@ taglib uri="/struts-logic" prefix="logic"%>
<%@ taglib uri="/terasoluna-struts" prefix="ts"%>
<%@ taglib uri="/terasoluna" prefix="t"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html:html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
<title>ユーザー照会画面</title>
</head>
<ts:body>
登録ユーザー一覧
<table border="1" frame="box">
<tr>
<th>ID</th>
<th>名前</th>
<th>年齢</th>
</tr>
<!-- 【5】 -->
<logic:iterate id="user" name="_form" property="users">
<tr>
<td><bean:write name="user" property="userId" /></td>
<td><bean:write name="user" property="userName" /></td>
<td><bean:write name="user" property="age" /></td>
</tr>
</logic:iterate>
</table>
<!-- 【6】 -->
<ts:pageLinks action="/listBL" name="_form" rowProperty="row"
totalProperty="totalCount" indexProperty="startIndex" />
<br/>
<!-- 【7】 -->
<bean:write name="currentPageIndex" />/
<bean:write name="totalPageCount" />ページ
(全部で<bean:write name="_form" property="totalCount"/>件)
<br/>
</ts:body>
</html:html>
・【5】 一覧表を作成 ・【6】 TERASOLUNAのタグライブラリ によりページリンクを作成 ・【7】 「現在ページ」「全ページ」を表示
タグ<ts:pageLinks>は、「開始インデックス」「1ページ表示件数」「総件数」の情報からページリンクを生成します。また、現在ページと全ページ数の値をそれぞれ「currentPageIndex」「totalPageCount」としてページコンテキストに格納します。
Struts設定ファイルのaction-mappings要素に、業務ロジックと画面の遷移先情報を記述します。
リスト3 struts-config.xml(action-mappings要素)
<action path="/listBL" name="_form" scope="session">
<forward name="success" path="/listSCR.do"/>
</action>
<action path="/listSCR" parameter="/list.jsp" />
次ページ では、そのほかの必要なファイルを作成し、サンプルを動かしてみます。
Copyright © ITmedia, Inc. All Rights Reserved.