rock@Wiki

Validator

最終更新:

匿名ユーザー

- view
だれでも歓迎! 編集

手順

まずはサーバー側の設定

  • struts-config.xmlに以下のようにバリデータプラグインの設定を記述。
 <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
 <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
 </plug-in>
  • バリデータフォームクラスを継承してフォームを作成。VaildatorFormを継承する場合は該当するフォームクラスを、DynaValidatorFormを使用する場合は、struts-config.xmlの<form-bean>エレメントに以下を例とする記述を追加。
   <form-bean
     name="VTInitForm"
     type="org.apache.struts.validator.DynaValidatorForm">
     <form-property name="number" type="java.lang.String"/>
     <form-property name="name" type="java.lang.String"/>
   </form-bean>
  • struts-config.xmlのactionエレメントのプロパティとして、以下の情報を記述。
    • validate:true
    • input:バリデーションエラー時の遷移先JSP
  • validation.xmlにバリデーションの情報を記述。
  • validator-rules.xmlにバリデーションルールを記述。
  • バリデーションエラー時の戻り先JSPに<html:errors/>を記述しておけば、バリデーションエラー時にエラー情報が表示される。

クライアントチェックJavaScriptの生成

  • JSPに以下のタグを追加。formNameプロパティに、バリデーション対象となるフォームの論理名(<form-bean>エレメントのname属性の値)を記述する。
<html:javascript formName="VTRegisterForm"/>
  • JSPのフォームタグに、onsubmitプロパティを追加。「"validate" + 前述のformName値」で表現されるJavaScript関数が自動生成されるので、この関数(引数はthis)を指定する。
<html:form action="/vtRegister" 
           onsubmit="return validateVTRegisterForm(this)">

注意点

  • ValidatorActionFormだとなぜかフォームチェック関数validateXXXForm()が自動生成されず、スクリプトエラーになる。validation.xmlでのフォーム名がパス指定になるので、これがうまく認識されない理由か?
  • バリデーションエラー時に表示するメッセージリソースに、エスケープシーケンスなしの"や'などを使用しないこと。生成されるJavaScriptでのクオーテーションと整合性が取れずにスクリプトエラーになる。

ValidatorFormとValidatorActionFormの違い

ValidatorFormとValidatorActionFormの違いはひとつだけ。それは、validation.xmlの<form>のname属性に指定する文字列は・・・
  • ValidatorFormでは、struts-config.xmlの<action>エレメントのname属性と同じ文字列。
  • ValidatorActionFormでは、struts-config.xmlの<action>エレメントのpath属性と同じ文字列。

タグ:

+ タグ編集
  • タグ:
ウィキ募集バナー