- PR -

StrutsのValidatorが正しく動作しない

1
投稿者投稿内容
ITOSE
会議室デビュー日: 2003/11/28
投稿数: 7
投稿日時: 2004-06-16 14:49
わからない点があるので質問させて頂きます。
Struts1.1のValidatorを使用しての入力チェック(JSP画面)が正しく動いてくれません。
具体的には、Validatorが働かずActionが正常に動作しています。
従って、<html:errors/>が入った元の画面に遷移されないのです。
表示されない以外は、正常画面に遷移するだけで特に問題ありません。
どこが、まずいのでしょうか?
おわかりの方、何か助言等お願いいたします。
<現段階でわかっている事>
アクションフォームBeanにValidatorFormクラスを継承.
→動作しない(正常Action画面に遷移してしまう)
アクションフォームBeanにActionFormクラスを継承し、validateメソッド使用.
→動作している?(validator設定ファイル構成がStruts1.1のままですが、入力画面が
再表示する)


環境等です。
・アクションフォームBeanにValidatorFormクラスを継承。
 (validateメソッドは使用していない。resetメソッドはencoding処理で使用)
・struts-cnonfig.xmlのplug-in要素にvalidator-rules.xmlと
 とvalidator.xmlをきちんと記述。
・JSP画面は、<html:errors/>を記述し、validatorが働けば、エラー表示するようにしてある。
 →現行、ここまで来ない。
・ApplicationResources.propertiesはUnicode変換済みで所定フォルダに保存済み。
・WinXP
・j2sdk1.4.2
・Eclipse + EasyStruts0.6.4
・Tomcat5.0
・Struts1.1

初歩的な間違いかもしれませんが、悩んでおりますので、
どうぞ宜しくお願い致します。
typer
会議室デビュー日: 2003/09/30
投稿数: 13
投稿日時: 2004-06-16 17:16
考えられるのは以下の3点です。

・ValidatorFormを継承したアクションフォームBeanで、
ValidatorFormのvalidateメソッドをオーバライドしたのはいいが、
super.validate()をコールし忘れている。

・struts-config.xml内のactionタグ内のvalidate属性に"false"が設定してある。

・validator.xml内で指定した、検証対象となるFormBeanのプロパティ名と
実際のFormBeanのプロパティ名が合っていないなどの設定ミス。

また、Tomcatのコンソール画面にはなにかエラーなどの情報が吐かれていたりしませんか?
ITOSE
会議室デビュー日: 2003/11/28
投稿数: 7
投稿日時: 2004-06-17 10:40
ご返答ありがとうございます。
現在の状況を整理しますと、同じActionフォームファイル(ValidatorForm継承)にて
・Validatorを使用した場合、検証機能が働かず、正常Actionしてしまう。
 (この時は、validateメソッドをコメントアウト)
・validateメソッド(super.validate()をコール)を使用した場合、検証機能が正常に働く。
といった感じです。
この現象からして、Validatorの為の環境設定やご指摘の
・struts-config.xml内のactionタグ内のvalidate属性に"false"が設定してある.
・validator.xml内で指定した、検証対象となるFormBeanのプロパティ名と実際のFormBeanの
 プロパティ名が合っていないなどの設定.
といった設定は問題無いのかなと判断しております。
些細な事でもいいですので、何かあれば教えて下さい。
どうしても、Validatorを使用してコーディングなしで検証機能を実現したいのです。
Struts1.1を利用するのなら、validateメソッドでの検証機能は避けたいです。
以上、よろしくお願いします。
カヌー
会議室デビュー日: 2003/01/14
投稿数: 19
投稿日時: 2004-06-17 11:44
お疲れ様です。

とりあえずStrutsのログを確認してみてはいかがでしょうか?
TRACEレベルを出力可にしておけばRequestProcessorのprocessValidate()からログ出力されるはずです。
aa
ぬし
会議室デビュー日: 2004/01/08
投稿数: 299
投稿日時: 2004-06-21 19:45
私もValidatorFormを継承しても全く無視される現象が発生して頭を抱えておりましたが、Commons Validator を最新(v1.0.2)にすれば動作しました。

http://jakarta.apache.org/site/binindex.cgi
ITOSE
会議室デビュー日: 2003/11/28
投稿数: 7
投稿日時: 2004-06-21 21:50
解決しました(*_*;
疑わしい所は全てチェックし、最後の手段だと思って、
Strutsが関係する各設定xmlファイルを最初から作りなおしてみました。
struts-config.xml → OK
ApplicationResources.properties → OK
validation.xml → NG

validation.xmlファイルに問題がることが判明。
しかし、OKファイルとNGファイルは見た目は全く同じ。
原因は不明です。
1

スキルアップ/キャリアアップ(JOB@IT)