Struts2不能使用验证?

时间:2012-12-24 09:47:34

标签: java java-ee struts2

请原谅,因为我对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放在错误的文件夹中,但我不确定哪里是正确的位置。谢谢你的回复!

3 个答案:

答案 0 :(得分:1)

验证xml文件必须与它验证的操作类位于同一Java包中。 在你的war文件中,LoginAction-validation.xml文件应位于WEB-INF/classes/your_loginAction_package内。

答案 1 :(得分:1)

如AleksandrM所述,每个action-validation.xml文件必须与对应的Action位于同一位置。

访问者验证程序例外,其中object-validation.xml文件必须位于您要验证的对象的同一文件夹中,而不是操作。

一些信息:

  • 您必须为您的操作定义INPUT结果
  • 当你的字段引发一个或多个验证错误时,你的Action方法(例如execute())没有到达(只有prepare()方法,如果存在,则被执行),所以如果你有一些人口需要完成,像组合框加载一样,使用prepare()或session;
  • 要查看JSP中的错误,您需要将标记<s:fielderror />放入其中。

答案 2 :(得分:1)

我认为问题是您的validation.xml未正确放置。

表示不将validation.xml文件放在web-inf/classes文件夹中,而是放在

您的操作类所在的操作包。

例如:对于某些操作类,您的包名称为com.insertyour class name is

Insert.java&amp;您的验证文件必须位于名称为

same pacakge

Insert-validation.xml然后它会正常工作。

Bottom Line Is:action class and validation file should be present in a same package.