Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带有xml配置的Struts2验证器不';行不通_Java_Validation_Jsp_Struts2_Struts2 Interceptors - Fatal编程技术网

Java 带有xml配置的Struts2验证器不';行不通

Java 带有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; 私人互联

我是Struts2的初学者。当我尝试使用验证框架验证表单中的输入数据时,我遇到了一个问题:验证器根本不工作。我可以得到当你通过验证时应该返回的页面,没有输入任何内容

下面是我的代码和包,我已经在StackOverFlow上搜索过了,但还没有找到解决问题的方法

Register.java

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类,但它似乎不起作用!验证失败了