错误
添加的一个页面校验无效,但是其他添加了校验器的页面的验证却又是有效的,点击提交后直接跳转到成功界面。
错误代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0.3//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd">
<validators>
<!--验证课程名称-->
<field name="course.courseName">
<field-validator type="required">
<message>课程名称是必需的!</message>
</field-validator>
</field>
<!--验证课程学分-->
<field name="course.credit">
<field-validator type="required">
<message>课程学分是必需的!</message>
</field-validator>
</field>
<!--验证授课老师-->
<field name="course.teacher">
<field-validator type="required">
<message>授课老师是必需的!</message>
</field-validator>
</field>
</validators>
原因
在这个校验文件中,<field-validator>标签中的type使用的是required,但是该使用requiredstring。
- required校验器:该校验器是必填校验器,要求指定的字段必须有值,但与必填字符串校验器的区别就是可以有空字符串。
- requiredstring校验器:该校验器是必填字符串校验器,要求输入框必须输入,并且字符串的长度大于0。
因此在本代码中才没有起作用,因为输入框允许有空字符串,所以其实验证通过了的。
解决
将type="required"改成type="requiredstring"。
正确代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0.3//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd">
<validators>
<!--验证课程名称-->
<field name="course.courseName">
<field-validator type="requiredstring">
<message>课程名称是必需的!</message>
</field-validator>
</field>
<!--验证课程学分-->
<field name="course.credit">
<field-validator type="requiredstring">
<message>课程学分是必需的!</message>
</field-validator>
</field>
<!--验证授课老师-->
<field name="course.teacher">
<field-validator type="requiredstring">
<message>授课老师是必需的!</message>
</field-validator>
</field>
</validators>
验证通过