0

私はStruts2を初めて使用するので、ご容赦ください。

非常に単純なフォームを作成し、次のLoginAction-validation.xmlを作成しました。

<validators>
  <field name="username">
    <field-validator type="requiredstring">
      <message key="username.required"/>    
   </field-validator>
    </field>
       <field name="password">
     <field-validator type="requiredstring">
     <message key="password.required"/> 
   </field-validator>  
  </field>
</validators>

このxmlファイルをWEB-INF/classesの下に置きました。jspページを実行し、ユーザー名とパスワードのフィールドを空のままにすると、警告メッセージは表示されませんが、error.jspにリダイレクトされます。

コンソールを見たところ、プロセス中にいくつかの警告があったことがわかりました。

 WARNING: Parameter [username] is not on the excludeParams list of patterns and will be appended to action!
 WARNING: Parameter [password] is not on the excludeParams list of patterns and will be appended to action!

おそらくvalidation.xmlを間違ったフォルダーに置いたのではないかと思いますが、正しい場所がどこにあるかわかりません。返信ありがとうございます!

4

3 に答える 3

1

検証xmlファイルは、検証するアクションクラスと同じJavaパッケージに含まれている必要があります。WARファイルのLoginAction-validation.xmlファイルは。内にある必要がありますWEB-INF/classes/your_loginAction_package

于 2012-12-24T10:15:23.600 に答える
1

AleksandrMの回答で述べたように、すべてのaction-validation.xmlファイルは、対応するアクションの同じ場所にある必要があります。

例外はVisitorValidatorに対して行われ、object-validation.xmlファイルは、検証するオブジェクトと同じフォルダーにある必要があります。これは、アクションではありません。

いくつかの情報:

  • アクションのINPUT結果を定義する必要があります。
  • フィールドで1つ以上の検証エラーが発生した場合、Actionメソッド(例:execute())に到達しません(prepare()メソッドのみが実行されます)。したがって、コンボボックスのように、常に実行する必要のある母集団がある場合ロード、prepare()またはセッションを使用します。
  • JSPでエラーを表示するには、JSPにタグを付ける必要があります<s:fielderror />
于 2012-12-24T10:23:15.963 に答える
1

問題はあなたvalidation.xmlが正しく配置されていないことだと思います。

手段は、validation.xmlファイルをweb-inf/classesフォルダーに配置せず、代わりに

アクションクラスが存在するアクションパッケージ。

com.insert例:いくつかのアクションクラスの場合、パッケージ名はyour class name is

Insert.java&検証ファイルはsame pacakge、という名前で含まれている必要があります

Insert-validation.xmlその後、正しく動作します。

Bottom Line Is:action class and validation file should be present in a same package.
于 2012-12-24T12:29:29.130 に答える