Struts2无法使用验证?
问题描述:
请原谅,因为我对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中错误的文件夹,但我不知道哪里是正确的地方。感谢您的回应!
答
我觉得问题是你的validation.xml
没有正确放置。
手段不把的validation.xml文件中,而不是放在
行动包凡Action类存在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.
答
验证xml文件必须与它验证的操作类位于同一Java包中。 在你的war文件中LoginAction-validation.xml
文件应该在WEB-INF/classes/your_loginAction_package
之内。
答
正如在AleksandrM回答中所说的,每个action-validation.xml文件必须位于相应的Action的相同位置。
访客验证程序发生异常,其中object-validation.xml文件必须位于要验证的对象的相同文件夹中,而非Action。
一些信息:
- 你必须定义的输入结果为您的行动,
- 当你的领域提出一个或多个验证错误,您的操作方法(例如,执行())没有达到(只有prepare()方法,如果存在的话,执行),所以如果你有一些总是要做的人,比如组合框加载,使用prepare()或session;
- 要查看JSP中的错误,您需要将标记
<s:fielderror />
放入其中。
谢谢。然而,我使用Eclipse并将Action类放在默认包下。因此,我将我的validation.xml放到了“build/classes”文件夹中,我可以看到所有已编译的操作类。再次,没有运气。你能给我一些建议吗? Thx – Kevin
我的建议是:当任何新的struts或学习struts去与struts-blank.war文件。为什么因为包括目录结构在内的所有东西(库文件)都在Web内容下正确显示,并以新的jsp页面开始,所以您不会感到困惑。使用此链接非常有帮助,并且只能从此目录中获取struts-blank.war文件直接导入到eclipse中并开始执行该项目。 – Raki
对不起,我忘记给我们这里的链接:http://apache.techartifact.com/mirror/struts/examples/ – Raki