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 文件必须与对应的 Action 位于同一位置。

访问者验证器有一个例外,其中 object-validation.xml 文件必须位于您正在验证的对象的同一文件夹中,这不是一个操作。

一些信息:

  • 你必须为你的动作定义一个输入结果,
  • 当您的字段引发一个或多个验证错误时,您的 Action 方法(例如,execute())未达到(仅执行 prepare() 方法,如果存在),因此如果您始终需要完成一些填充,例如组合框加载,使用 prepare() 或 session;
  • 要查看 JSP 中的错误,您需要将标记<s:fielderror />放入其中。
于 2012-12-24T10:23:15.963 回答
1

我认为问题是你validation.xml没有正确放置。

意味着不要将validation.xml文件放在文件web-inf/classes夹中,而是放在

动作类所在的动作包。

例如:对于某些动作类,您的包名是com.insertyour 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 回答