2012-12-24 108 views
0

请原谅,因为我对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> 

我已经把WEB-INF/classes目录下,该XML文件。当我运行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中错误的文件夹,但我不知道哪里是正确的地方。感谢您的回应!

回答

1

我觉得问题是你的validation.xml没有正确放置。

手段不把的validation.xml文件中,而不是放在

行动包凡Action类存在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. 
+0

谢谢。然而,我使用Eclipse并将Action类放在默认包下。因此,我将我的validation.xml放到了“build/classes”文件夹中,我可以看到所有已编译的操作类。再次,没有运气。你能给我一些建议吗? Thx – Kevin

+0

我的建议是:当任何新的struts或学习struts去与struts-blank.war文件。为什么因为包括目录结构在内的所有东西(库文件)都在Web内容下正确显示,并以新的jsp页面开始,所以您不会感到困惑。使用此链接非常有帮助,并且只能从此目录中获取struts-blank.war文件直接导入到eclipse中并开始执行该项目。 – Raki

+0

对不起,我忘记给我们这里的链接:http://apache.techartifact.com/mirror/struts/examples/ – Raki

1

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

1

正如在AleksandrM回答中所说的,每个action-validation.xml文件必须位于相应的Action的相同位置。

访客验证程序发生异常,其中object-validation.xml文件必须位于要验证的对象的相同文件夹中,而非Action。

一些信息:

  • 你必须定义的输入结果为您的行动,
  • 当你的领域提出一个或多个验证错误,您的操作方法(例如,执行())没有达到(只有prepare()方法,如果存在的话,执行),所以如果你有一些总是要做的人,比如组合框加载,使用prepare()或session;
  • 要查看JSP中的错误,您需要将标记<s:fielderror />放入其中。