Java 带有xml配置的Struts2验证器不';行不通
我是Struts2的初学者。当我尝试使用验证框架验证表单中的输入数据时,我遇到了一个问题:验证器根本不工作。我可以得到当你通过验证时应该返回的页面,没有输入任何内容 下面是我的代码和包,我已经在StackOverFlow上搜索过了,但还没有找到解决问题的方法 Register.javaJava 带有xml配置的Struts2验证器不';行不通,java,validation,jsp,struts2,struts2-interceptors,Java,Validation,Jsp,Struts2,Struts2 Interceptors,我是Struts2的初学者。当我尝试使用验证框架验证表单中的输入数据时,我遇到了一个问题:验证器根本不工作。我可以得到当你通过验证时应该返回的页面,没有输入任何内容 下面是我的代码和包,我已经在StackOverFlow上搜索过了,但还没有找到解决问题的方法 Register.java package validation; /** *由xiangang.wei于2016/10/26创建。 */ 公共班级登记册{ 私有字符串用户名; 私有字符串密码; 私有字符串rpassword; 私人互联
package validation;
/**
*由xiangang.wei于2016/10/26创建。
*/
公共班级登记册{
私有字符串用户名;
私有字符串密码;
私有字符串rpassword;
私人互联网;
私人int电话;
私人字符串电子邮件;
公共字符串getRpassword(){
返回rpassword;
}
public void setRpassword(字符串rpassword){
this.rpassword=rpassword;
}
public void setUserName(字符串用户名){
this.userName=用户名;
}
public void setPassword(字符串密码){
this.password=密码;
}
公共无效设置(整数){
这个。年龄=年龄;
}
公用无效设置电话(int电话){
this.phone=电话;
}
公用电子邮件(字符串电子邮件){
this.email=电子邮件;
}
公共字符串getUserName(){
返回用户名;
}
公共字符串getPassword(){
返回密码;
}
公共整数getAge(){
回归年龄;
}
公共int getPhone(){
回电话;
}
公共字符串getEmail(){
回复邮件;
}
公共字符串execute(){
返回“成功”;
}
}
Register-validation.xml
用户名
10
1.
长度不对!
密码
![CDATA[password==rpassword]]
密码不一样!
年龄
130
1.
年龄必须在1-130岁之间
电子邮件
请输入有效的电子邮件地址!
struts.xml
/注册视图/register-success.jsp
/index.jsp
web.xml
支柱2
org.apache.struts2.dispatcher.filter.strutspreadexecutefilter
支柱2
/*
格雷德尔先生
香港卫组
版本“1.0-SNAPSHOT”
应用插件:“java”
应用插件:“战争”
sourceCompatibility=1.8
存储库{
jcenter()
}
依赖关系{
testCompile组:“junit”,名称:“junit”,版本:“4.11”
编译“org.apache.struts:struts2 core:2.5”
}
index.jsp
用户注册
register-success.jsp
注册成功!
祝贺你!
以下是您的注册信息:
姓名:
密码:
年龄:
电邮:
电话号码:
验证由执行。从其文档中:
此拦截器通过标准验证框架运行操作,标准验证框架反过来根据任何验证规则(在ActionClass validation.xml等文件中找到)检查操作,并添加字段级和操作级错误消息(,前提是操作实现了ValidationAware)
您的操作既不是扩展ActionSupport
(实现ValidationAware
,也不是手动实现ValidationAware
)
您只是没有指示框架验证您的操作
作为一条黄金法则,始终让您的操作扩展ActionSupport
更好的是,创建一个扩展ActionSupport
的BaseAction,您将在其中放置常见的逻辑和设置,例如区域设置/时区、日期解析格式等。。。然后使您的操作扩展BaseAction
编辑 在最近的Struts2版本中,DTD发生了变化;替换这个
用这个
如上所述。验证由执行。从其文档中: 此拦截器通过标准验证框架运行操作,标准验证框架反过来根据任何验证规则(在ActionClass validation.xml等文件中找到)检查操作,并添加字段级和操作级错误消息(,前提是操作实现了ValidationAware) 您的操作既不是扩展
ActionSupport
(实现ValidationAware
,也不是手动实现ValidationAware
)
您只是没有指示框架验证您的操作
作为一条黄金法则,始终让您的操作扩展ActionSupport
更好的是,创建一个扩展ActionSupport
的BaseAction,您将在其中放置常见的逻辑和设置,例如区域设置/时区、日期解析格式等。。。然后使您的操作扩展BaseAction
编辑 在最近的Struts2版本中,DTD发生了变化;替换这个
用这个
如前所述。它起作用了吗?如果答案有效,请记住接受。嗨,我没有扩展ActionSupport类,你是对的。所以我扩展了ActionSupport类,但似乎没有“不行!验证仍然不起作用。我正在使用Struts 2.5.1,我必须将validators.xml中的DTD滚动到1.0,而不是1.0.3才能工作!可能对只检查过一个版本的人有用它能用吗?如果答案有效,请记住接受。嗨,我没有扩展ActionSupport类,你是对的。所以我扩展了ActionSupport类,但它似乎不起作用!验证失败了