エンタープライズ:特集 | 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のように、エラーメッセージが表示され確認できる。
ところで、Strutsによる検証機能は、JavaScriptによるクライアント側でのエラーメッセージ表示にも対応している。JavaScriptによるクライアント側でのエラーメッセージに対応するには、次のjavascript要素をどこかに埋め込めばよい。
<html:javascript formName="KeijiWriteForm"/> |
ここで指定するformName属性は、入力フォームの名称だ。そして、form要素を次のように変更しよう。
8: <html:form action="/Write" onsubmit="return validateKeijiWriteForm(this);"> |
ここで指定する関数は、javascript要素で指定した入力フォーム名の前に、「validate」を付けたものである。これにより検証はクライアント側でも行われ、エラー時に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]