目次 > 第2章 Server(Web)版チュートリアル > 2.8 入力チェック(単項目) > 2.8.1 ログオン画面の入力チェック設定
2.8.1 ログオン画面の入力チェック設定
Server(Web)版が提供する入力チェックはCommons Validatorを利用しており、入力チェックの定義はバリデーション設定ファイルに記述する。
本項では、ログオン時に入力する「ユーザID」に対し、サーバー側で以下のチェックを実施する。
- 必須入力である
- 半角英数字である
- 最大文字数は10文字である
なお、エラーメッセージはServer(Web)版が提供するデフォルトメッセージを利用する。
手順
本項では以下の作業が必要になる。
(1) ログオン画面の編集
入力チェックのエラーメッセージを表示するタグを追加する。
- “terasoluna-spring-thin-blank\webapps\logon\logon.jsp”を開き、<html:errors>タグを追加する。
<%@ 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> <body> <table border="0" style="width:100%;"> <tr> <td align="center"> <html:img module="/" page="/image/terasoluna_logo.gif" /> </td> </tr> <tr> <td align="center"> <h2> ログオン画面 </h2> </td> </tr> </table> <!-- ここから --> <html:errors /> <!-- ここまで --> <ts:form action="/logon/logonBL"> <table border="0" align="center"> <tr> <td> UserId: </td> <td> <html:text property="userId"/> </td> <td> <ts:submit value="ログオン"/> </td> </tr> </table> </ts:form> </body> </html:html>
(2) メッセージリソースファイルの確認
入力チェックのエラーメッセージを確認する。
- “terasoluna-spring-thin-blank\sources\application-messages.properties”を開き、以下のメッセージが設定されていることを確認する。
errors.required={0}は入力必須項目です. errors.alphaNumericString={0}には半角英数字で入力してください. errors.maxlength={0}には{1}文字以下で入力してください.
(3) メッセージリソースファイルの編集
入力チェックのエラーメッセージで利用する項目名を設定する。
- “terasoluna-spring-thin-blank\sources\application-messages.properties”を開き、以下のメッセージを追加する。
logon.userId=UserId
(4) バリデーション設定ファイルの編集
入力チェックの定義を設定する。
- “terasoluna-spring-thin-blank\webapps\WEB-INF\logon\validation-logon.xml”を開き、以下の箇所に設定を追加する。
<form-validation> <formset> <!-- ログオン機能確認 --> <form name="/logon/logonBL"> <field property="userId" depends="required,alphaNumericString,maxlength"> <arg key="logon.userId" position="0"/> <arg key="${var:maxlength}" name="maxlength" resource="false" position="1"/> <var> <var-name>maxlength</var-name> <var-value>10</var-value> </var> </field> </form> </formset> </form-validation>
入力チェックはアクションパスごとに定義する。
<field>要素のproperty属性に、チェック対象となるフォームの属性を設定し、depends属性に利用するルールを設定する。
今回利用するルールは以下の通りである。
ルール | 説明 |
required | 必須チェック |
alphaNumericString | 半角英数字チェック |
maxlength | 最大文字数チェック |
<arg>要素は(2)で確認したメッセージのプレースホルダで置き換える文字列を表す。
(5) Struts設定ファイルの編集
入力チェックを実施する設定をアクション設定に追加する。
- “terasoluna-spring-thin-blank\webapps\WEB-INF\logon\struts-logon-config.xml”を開き、以下のように修正する。
<!-- ======================================== アクションマッピング定義 --> <action-mappings type="jp.terasoluna.fw.web.struts.action.ActionMappingEx"> ・・・略・・・ <!-- ログオン処理用アクション --> <action path="/logon/logonBL" name="_logonForm" scope="session" validate="true" input="/logon/logoff.do"> <forward name="success" path="/logon/menuSCR.do" /> </action> ・・・略・・・
<action>要素のvalidate属性に“true”を設定することで、入力チェックが実施される。また、input属性には入力チェックエラー時の遷移先を指定する。