エンタープライズ:特集 2003/11/28 15:30:00 更新


特集:第2回 実用サンプルコードで理解する「Struts」の基礎 (15/15)

実装後は検証機能を動作させる

 さて以上で実装作業が終わったが、このままでは検証機能が働かない。検証機能を働かせるには、struts-config.xmlファイルを編集し、機能を有効にする必要があるのだ。次のように「validation="true"」を指定しよう。

<action-mappings>
<action path="/Write" type="sample.keiji.KeijiWriteAction"
name="KeijiWriteForm" scope="request" validate="true"
input="/KeijiWrite.jsp"

>
<forward name="success" path="/pages/KeijiWriteSuccess.jsp"/>
</action>
〜略〜
</action-mappings>

 上記のようにvalidation=trueを指定すると、検証機能が有効となる。もし、何らかの検証エラーが発生した場合には、Actionサブクラスを呼び出さず、代わりにinput属性で指定したJSPページにフォワードされることになる。

 上記では、フォワード先のJSPページとしてKeijiWrite.jspファイルを指定しておいた。KeijiWrite.jspファイルは、すでにList 2に示したように、投稿用のフォームを構成するJSPページだ。つまりエラーがあった場合には、ユーザーに再入力を求めようというわけだ。そうとはいえ、このままではユーザーにエラーメッセージが表示されないため、「なぜ結果が表示されないのだろう」と不安に思われてしまう可能性がある。

 そこで、対処方法としてKeijiWrite.jspファイルの適当な個所に<html:errors/>を入れておこう。検証エラーでのエラーメッセージは、ActionErrorsオブジェクトに格納されることから、エラーメッセージがユーザーへと表示されるようになる。

1: <%@ page contentType="text/html; charset=EUC_JP" %>
2: <%@ taglib uri="/tags/struts-html" prefix="html" %>
3: <%@ taglib uri="/tags/struts-logic" prefix="logic" %>
4: <html>
5: <body>
6: <div align="center">
7: <h1>掲示板投稿</h1>
8: <html:form action="/Write">
9: <logic:messagesPresent>
10: <font color="red">入力エラーがあります。再入力してください。</font>
11: <html:errors/>
12: </logic:messagesPresent>

13: 〜以下、List 2と同じ〜

 以上で設定が完了だ。実際に、幾つかの項目を未入力にして「SUBMIT」ボタンを押すと、Fig.7のように、エラーメッセージが表示され確認できる。

fig07.gif

Fig.7■エラーメッセージの表示


 ところで、Strutsによる検証機能は、JavaScriptによるクライアント側でのエラーメッセージ表示にも対応している。JavaScriptによるクライアント側でのエラーメッセージに対応するには、次のjavascript要素をどこかに埋め込めばよい。

<html:javascript formName="KeijiWriteForm"/>

 ここで指定するformName属性は、入力フォームの名称だ。そして、form要素を次のように変更しよう。

8: <html:form action="/Write" onsubmit="return validateKeijiWriteForm(this);">

 ここで指定する関数は、javascript要素で指定した入力フォーム名の前に、「validate」を付けたものである。これにより検証はクライアント側でも行われ、エラー時にFig.8のようにポップアップウィンドウで知らせてくれるようになる。

fig08.gif

Fig.8■ポップアップウィンドウによるエラー表示


StrutsはJSPとサーブレットとの橋渡しをしているに過ぎない

 以上、Strutsを使ったアプリケーションの構築方法を説明してきた。これでもかなりポイントに絞った解説であり、Webページ間でのセッションを使ってデータ保持や、フォーム認証などの話題は扱えなかった。しかし、Strutsにおける入力フォームの扱い方と出力の仕方の基本をしっかりと押さえたつもりだ。Strutsは、一般的にクラスが絡んで複雑という印象もあるが、結局のところは次のような仕組みとなっている。

  • 入力フォームはJSPファイルで用意し、ActionFormサブクラスが受け取る
  • 出力データはActionサブクラスで用意し、JSPファイルにフォワードする

 簡単にいえば、「StrutsはJSPとサーブレットとの橋渡しをしているに過ぎない」のだ。後は、Strutsのさまざまなタグライブラリの使い方を理解しつつ、慣れていけばより本格的なWebアプリケーションを構築することができるだろう。Strutsについては今回で終了だが、さらに疑問な点があれば、投稿フォームから読者の意見をうかがいたい。

関連記事
▼特集「Strutsで作るWebアプリケーション入門」
▼特集「オープンソースで作るJava+DB」

関連リンク
▼Apache Struts 公式サイト
▼Apache Ant 公式サイト
▼Java チャンネル

前のページ | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |      

[大澤文孝,ITmedia]