在进行配置Struts2的校验文件时出现一下报错
此时我们的 <actionClass>-<actionAlias>-validation.xml的头为:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.dtd">
通过查看xwork-validator-1.0.dtd文件:
我们看到下面并没有short-circuit,也就是说在1.0版本中还没有允许使用short-circuit。
<!ELEMENT validators (field*,validator*)>
<!ELEMENT field (field-validator+)>
<!ATTLIST field
name CDATA #REQUIRED
>
<!ELEMENT field-validator (param*, message)>
<!ATTLIST field-validator
type CDATA #REQUIRED
>
<!ELEMENT validator (param*, message)>
<!ATTLIST validator
type CDATA #REQUIRED
>
<!ELEMENT param (#PCDATA)>
<!ATTLIST param
name CDATA #REQUIRED
>
<!ELEMENT message (#PCDATA)>
<!ATTLIST message
key CDATA #IMPLIED
>
我们再打开xwork-validator-1.0.2dtd或xwork-validator-1.0.3dtd:
我们看到已经存在short-circuit,只有1.0.2版本以上才允许使用短路校验器。
<!ELEMENT validators (field|validator)+>
<!ELEMENT field (field-validator+)>
<!ATTLIST field
name CDATA #REQUIRED
>
<!ELEMENT field-validator (param*, message)>
<!ATTLIST field-validator
type CDATA #REQUIRED
short-circuit (true|false) "false"
>
<!ELEMENT validator (param*, message)>
<!ATTLIST validator
type CDATA #REQUIRED
short-circuit (true|false) "false"
>
<!ELEMENT param (#PCDATA)>
<!ATTLIST param
name CDATA #REQUIRED
>
<!ELEMENT message (#PCDATA|param)*>
<!ATTLIST message
key CDATA #IMPLIED
>
解决方法:
我们只需将<actionClass>-<actionAlias>-validation.xml的头修改为:
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0.3//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
该声明可以在xwork-validator-1.0.3.dtd文件中找到。