- 5.1. ActionForm Beanのvalidateメソッド
- 5.2. エラーメッセージの表示
- 5.3. HTMLタグライブラリ
- 5.4. formタグ/submitタグ/cancelタグ/resetタグ
5.2. エラーメッセージの表示
検証を行い、エラーメッセージのキーをActionErrorsに登録しても肝心のエラーメッセージは表示されません。エラーメッセージの表示には、HTMLタグライブラリのerrorsタグを使用します。errorsタグは、Struts設定ファイルのaction要素のinput属性で指定されたJSPページで使用します。
... <%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %> ... 以下のフォームにデータを入力してください。<br> <html:errors> <form action="..."> ...
HTMLタグライブラリを使用する設定は、messageタグの場合と同じです。errorsタグはvalidateメソッドからActionErrorsオブジェクトが返された場合、その内容を検索して表示します。ただエラーメッセージをそのまま表示するため、メッセージリソースに登録する内容を工夫をしない限りは、見苦しい表示となってしまいます。例えば全てのメッセージの最後に<br>タグをつけるなどの工夫をしなければ、綺麗な表示となりません。そこで以下の特殊なキーが登録されている場合には、それらを使用して表示を行います。
errors.header | errorsタグの先頭に埋め込むメッセージ(HTMLタグ)を指定します。<ul>などを想定しています。 |
---|---|
errors.footer | errorsタグの最後に埋め込むメッセージ(HTMLタグ)を指定します。</ul>などを想定しています。 |
errors.prefix | 各エラーメッセージの先頭に埋め込むメッセージ(HTMLタグ)を指定します。<li>などを想定しています。 |
errors.suffix | 各エラーメッセージの最後に埋め込むメッセージ(HTMLタグ)を指定します。</li>や<br>などを想定しています。 |
例えば以下のようなメッセージリソース(native2asciiでUnicodeエンコードされると考えてください)で、「invalid.name」「invalid.maker」の2つがエラーメッセージのキーとして指定された場合、
errors.header=<font color="red"> errors.footer=</font> errors.suffix=<br> invalid.name=製品名は必ず入力するようにして下さい。 invalid.maker=メーカ名は必ず入力するようにして下さい。 ...
以下のようなHTMLがerrorsタグによって表示されます(実際には、改行は含まれません)。
... <font color="red">
製品名は必ず入力するようにして下さい。<br> メーカ名は必ず入力するようにして下さい。<br> </font> ...
しかしこれまでの方法では、全てのエラーメッセージが一箇所に表示されてしまいます。あるエラーメッセージはとある箇所、別のメッセージは別の箇所にしたい事が考えられます。その場合には、errorsタグにproperty属性を指定します。
... <html:errors property="name" /> ...
property属性が指定されると、ActionErrorsのaddメソッドを使う際に指定した第1引数と同じものだけが、表示されるようになります。上の例の場合には、「製品名は必ず入力するようにして下さい」というエラーメッセージが表示されるようになります。
(実習課題2)
実習課題1のWebアプリケーションを改良しなさい。
- エラーメッセージを表示するようにする事。
- 異なる入力フォームに関するエラーメッセージは、別々の箇所に表示されるようにする事。