在validation.xml里,写验证的时候,
<field property="name" depends="required">
<msg name="required" key="errors.required" />
<arg0 key="lable.name" resource="true" bundle="PAGE"/>
</field>
会报错The content of element type "field" must match "(msg|arg|var)*".错误。
原因:这3个错误其实是因为一个原因引起的,那就是arg0的问题,不是所有的dtd版本都支持arg0参数。
仔细研究commons-validator-1.3.0\org\apache\commons\validator\resources中下的所有dtd的版本号,会发现,各版本关于filed中参数的定义不同。
在validator_1_1_3.dtd之前的版本中,如下:
<!ELEMENT field (msg|arg|arg0|arg1|arg2|arg3|var)*>
<!ATTLIST field property CDATA #REQUIRED>
<!ATTLIST field depends CDATA #IMPLIED>
<!ATTLIST field page CDATA #IMPLIED>
<!ATTLIST field indexedListProperty CDATA #IMPLIED>
在之后的版本如下:
<!ELEMENT field (msg|arg|var)*>
<!ATTLIST field property CDATA #REQUIRED>
<!ATTLIST field depends CDATA #IMPLIED>
<!ATTLIST field page CDATA #IMPLIED>
<!ATTLIST field indexedListProperty CDATA #IMPLIED>
可见不是所有的dtd版本都支持arg0参数的。
让人奇怪的是:即使采用支持arg0参数的validator_1_1_3.dtd或是之前的版本,仍然报此错误。不知为何。先不管了,将validation.xml中的arg0,arg1统一改为arg。
补充 :
bundle="PAGE" 是因为多个项目放在一个工程里,要指定,否则找不到属性文件或是相关信息。
<field property="name" depends="required">
<msg name="required" key="errors.required" />
<arg0 key="lable.name" resource="true" bundle="PAGE"/>
</field>
会报错The content of element type "field" must match "(msg|arg|var)*".错误。
原因:这3个错误其实是因为一个原因引起的,那就是arg0的问题,不是所有的dtd版本都支持arg0参数。
仔细研究commons-validator-1.3.0\org\apache\commons\validator\resources中下的所有dtd的版本号,会发现,各版本关于filed中参数的定义不同。
在validator_1_1_3.dtd之前的版本中,如下:
<!ELEMENT field (msg|arg|arg0|arg1|arg2|arg3|var)*>
<!ATTLIST field property CDATA #REQUIRED>
<!ATTLIST field depends CDATA #IMPLIED>
<!ATTLIST field page CDATA #IMPLIED>
<!ATTLIST field indexedListProperty CDATA #IMPLIED>
在之后的版本如下:
<!ELEMENT field (msg|arg|var)*>
<!ATTLIST field property CDATA #REQUIRED>
<!ATTLIST field depends CDATA #IMPLIED>
<!ATTLIST field page CDATA #IMPLIED>
<!ATTLIST field indexedListProperty CDATA #IMPLIED>
可见不是所有的dtd版本都支持arg0参数的。
让人奇怪的是:即使采用支持arg0参数的validator_1_1_3.dtd或是之前的版本,仍然报此错误。不知为何。先不管了,将validation.xml中的arg0,arg1统一改为arg。
补充 :
bundle="PAGE" 是因为多个项目放在一个工程里,要指定,否则找不到属性文件或是相关信息。