本日のテーマは、Terasolunaのバリデーションチェックのサンプルを挙げて解説します。
とはいえ、Terasolunaでのバリデーションチェックは、StrutsのチェックルールとTerasoluna独自のチェックルールを含めています。
本章はそれを区別なく、すべてTerasolunaのバリデーションチェックとする。
なお、「バリデーションチェックは何だ?」と疑問をする方々は、strutsのバリデーションチェックの仕組みに関する知識を先に習得してから、また本記事を読んだほうがいいと思う。
もちろん、validation検証するための最低限のTerasolunaプロジェクトを新規しなければいけない。僕の場合、Terasolunaのblank版のプロジェクトを利用しています。
次は、必要な設定を行う。①web.xmlでstruts-validation-config.xmlを宣言。(struts-config.xmlはそのまま利用できますが、ここでバリデーション検証専用のstruts設定ファイルを新規)
<!-- ======================================== サーブレット定義(抜粋) -->
<servlet>
<init-param>
<param-name>config/validation</param-name>
<param-value>/WEB-INF/validation/struts-validation-config.xml</param-value>
</init-param>
</servlet>
上記で、プロジェクトはstruts-validation-config.xmlを利用できるように設定しました。
②web.xml宣言したstruts-validation-config.xmlファイルに、validationContext.xmlとvalidation.xmlの利用宣言を追加。
<!-- ======================================== プラグイン定義 -->
<plug-in className=""org.springframework.web.struts.ContextLoaderPlugIn"">
<set-property property=""contextConfigLocation""
value=""/WEB-INF/validation/validationContext.xml""/>
</plug-in>
<plug-in className=""org.apache.struts.validator.ValidatorPlugIn"">
<set-property property=""pathnames""
value=""/WEB-INF/validator-rules.xml,/WEB-INF/validator-rules-ex.xml,/WEB-INF/validation.xml,/WEB-INF/validation/validation.xml""/>
<set-property property=""stopOnFirstError""
value=""false""/>
</plug-in>
③struts-validtion-config.xmlに動的なFormを宣言(validation検証用FormBean)。
<!-- ======================================== フォームビーン定義 -->
<form-beans>
<form-bean name=""_commonForm""
type=""jp.terasoluna.fw.web.struts.form.DynaValidatorActionFormEx"" >
<form-property name=""t1"" type=""java.lang.String""/>
<form-property name=""t1_textarea"" type=""java.lang.String""/>
以上の設定で、バリデーション検証できる環境を揃いました。
それでは、開発現場でよく使われている20何種類のバリデーションチェックサンプルを順次に解説します。
1、
必須チェック(required)
<1> v1.jspサンプルコード
<!-- エラーメッセージ表示エリア -->
<ts:ifErrors>
<div class=""com-info-panel"">
<div class=""com-error-message-panel"" id=""customer-error-message-panel"" align=""center"">
<span id=""errorMessage""><ts:errors /></span>
</div>
</div>
</ts:ifErrors>
<!-- バリデーション検証Formエリア -->
<ts:form action=""/v1CheckAction.do"" method=""POST"">
<div align=""center"">
<br>
<table border=""0"" cellspacing=""0"" cellpadding=""2"">
<tr>
<td>1.必須項目(テキスト):</td>
<td colspan=""3"" nowrap>
<html:text name=""_commonForm"" property=""t1"" size=""50"" maxlength=""25"" errorStyleClass=""error-input"" />
</td>
<td nowrap>
</td>
</tr>
<tr>
<td>1.必須項目(テキストエリア):</td>
<td colspan=""3"" nowrap>
<html:textarea name=""_commonForm"" property=""t1_textarea"" cols=""15"" rows=""5"" errorStyleClass=""error-input"" />
</td>
<td nowrap>
</td>
</tr>
</table>
</div>
<br>
<br>
<div align=""center"">
<table border=""0"" cellspacing=""1"" cellpadding=""1"">
<tr>
<td nowrap>
<html:submit property=""forward_action"" value="" 実 行 "" />
</td>
</tr>
</table>
</div>
</ts:form>
<2> struts-validtion-config.xmlで画面遷移の設定
<!-- 1.必須項目チェック入力遷移-->
<action path=""/v1""
name=""_commonForm""
scope=""session"">
<set-property property=""cancelPopulate"" value=""true"" />
<forward name=""success"" module=""/validation"" path=""/v1.jsp""/>
</action>
<!-- チェックアクション -->
<action path=""/v1CheckAction""
name=""_commonForm""
input=""/v1.do""
validate=""true"">
<forward name=""success"" module=""/validation"" path=""/v1.jsp""/>
<forward name=""default"" module=""/validation"" path=""/v1.jsp""/>
</action>
<3> validationContext.xmlでForwardActionのインスタンス設定
<!-- 1. 必須 -->
<bean name=""/validation/v1"" scope=""singleton""
class=""jp.terasoluna.fw.web.struts.actions.ForwardAction"" />
<bean name=""/validation/v1CheckAction"" scope=""singleton""
class=""jp.terasoluna.fw.web.struts.actions.ForwardAction"" />
<4> 最後、validation.xmlでバリデーションチェックルールの設定
<!-- 1.必須項目チェック -->
<form name=""/v1CheckAction"">
<field property=""t1""
depends=""required"">
<arg key=""入力テキスト"" resource=""false"" position=""0""/>
</field>
<field property=""t1_textarea""
depends=""required"">
<arg key=""入力テキストエリア"" resource=""false"" position=""0""/>
</field>
</form>
それでは、http://localhost:8080/vc/v1.doにアクセスして、必須項目チェック(required)を検証してください。
何も入力せず、「実行」ボタンを押すと、こんな画面が出ます。
以上、Terasolunaでバリデーションチェックの必須チェックサンプルでした。
後日に、Terasolunaでほかのバリデーションチェックのサンプルを掲載する予定です。ぜひ閲覧してください。
♪ 当記事がお役に立ちましたらシェアして頂ければ嬉しいです。
zanmai @2016年03月31日
» ①②③④の順で設定できるはず。…