【第十一回】勤務時間登録画面を作る(クライアントサイド)

Javaウェブアプリ開発

はじめに

DreamHanksの松下です。

前回は「勤務時間登録画面を描画するためのオブジェクト生成」をサーバー内で行いました。

今回はアトリビュートしたオブジェクトを使って、勤務時間登録画面を描画していきます。

連載記事まとめ

 

JSP

今回のJSPでメインとなってくる処理が下記の2点です。

・画面描画のループ処理
・土日に色を付ける

 

 

画面描画のループ処理

JSTL(JavaServer Pages Standard Tag Library)のcoreというライブラリのforEachという関数を使います。

forEachには下記の3つのプロパティを設定します。
・var
・items
・varStatus

 

いつものようにEL式を使って、サーバーでアトリビュートされた「wtList」をvarプロパティのobjという変数にに1つずつ代入していきます。

javaの拡張for文と同じ感覚です。拡張for文的に表すと下記のようになります。

Worktime のオブジェクトで値が格納されているので、下記のように設定ができます。${obj.workDate}
${obj.week}
${obj.startTime}
${obj.endTime}
${obj.memo}

 

varStatusプロパティは現在のループの状態を表すステータス変数を定義するものです。

current var属性で指定した変数に格納されている現在のオブジェクト
index 現在のループのインデックス番号(ゼロから開始したインデックス番号)
count 現在のループのインデックス番号(1から開始したインデックス番号)
first 現在がループの先頭かどうか(true/false)
last 現在がループの最後かどうか(true/false)
begin begin属性に指定した値
end end属性に指定した値
step step属性に指定した値

次のトピックで使い方の解説をします。

複数あるテーブルの値のpathingってどうやるの?

上記のように、出社/退社/休み時間と備考
そして、テーブルなので複数行のデータをpathingする必要があります。

 

ここでForm内にForm自体のオブジェクトをListで作ります。

 

Formのリストオブジェクト.[何番目].変数名というようにpathingをすると
Listでオブジェクトの変数に値が設定されていきます。

varStatusプロパティのstatusという設定した変数にindexという要素があるので
今回はこちらを使います。

forEachのループ処理が回るたびに0からインデックス番号を生成し、それを使って
Formのリストオブジェクトの変数に値を詰めていきます。

 

土日に色を付ける

サーバーからは日月火などの曜日の文字列が渡されてくるのではなく
0~6までの数値で送られてきます。

なので今回は0~6の数値を曜日の文字列に変換し、土日に色を付けるという処理をします。

今回はクライアント側で処理を行うために、クライアントで動作するjavascriptという
言語を使って処理を作ります。

厳密には上記のスクリプトはjQueryというもので、jQueryはjavascriptのライブラリです。
jQueryはjavascriptよりもより簡単に処理を作ることができます。
よって、jQueryで表すことのできる処理はjavascriptでも表現可能で、その逆もできます。

技術者としてはどちらでも表現ができるように、しておきましょう。

クライアントで何か処理をする場合大切になることは下記の2点です。
・いかに効率よくhtml要素をたどり、狙った値に接近/取得するか。
・そして、取得したものをどのように書き換えるか。

 

順に処理を説明していきます

$( ‘#table’ )はtableタグのtableというID要素に接近しています。

.find( ‘td.week’ )はtdタグのweekというクラス要素に接近しています。

.each()メソッドを使い、ループ処理を行います。
そして、その中にfunctionを定義しています。

weekArry=[“日”,”月”,”火”,”水”,”木”,”金”,”土”]という配列を生成します。

var i = $(this).text();は
$(this)は今接近しているhtml要素を表し、今回の場合は「 ‘td.week’ 」です。
.text()はthisのラベル要素に接近してiという変数に代入(取得)しています。
※今現状は取得できる値は数値です。

$(this).text(weekArry[6]);
0だった場合に土曜、1だったら日曜日、それ以外は[i-1]の文字列を代入します。

$(this).css( ‘color’ , ‘Blue’ );
と記述することでcssの設定を行うこともできます。

 

最後に

勤務時間登録画面の描画方法とテーブルの複数あるデータをサーバーに送る方法について解説しました。

次回は受け取ったテーブルの値を使って、DBの勤務時間管理TBLを登録/更新処理を解説いたします。

 

お読みいただきありがとうございました。

 

 

 

コメント