动作类具有要验证的属性。该属性是一个类(MyClass1),其属性之一也是一个类(MyClass2)。
每个要验证的类都将由多个操作使用,因此我定义了一个" MyClass * -validation.xml"为每个人。
我遇到的问题是尝试使用MyClass1中的访问者验证程序来验证MyClass2。
MyAction-validation.xml中:
<validators>
<field name="class1">
<field-validator type="visitor">
<message></message>
</field-validator>
</field>
</validators>
MyClass1的-validation.xml中:
<validators>
<field name="class2">
<field-validator type="visitor">
<message></message>
</field-validator>
</field>
</validators>
MyClass2-validation.xml中:
<validators>
<field name="myInt">
<field-validator type="conversion">
<message>myInt conversion</message>
</field-validator>
</field>
</validators>
如果我提交一个包含字段class1.class2.myInt =&#34; a&#34;的表单,则fieldErrors()不包含转换错误,这是我的期望。
是否可以无限期地链接访问者验证者,或者是最高级别的访问者级别?如果有可能,我做错了什么?
不受欢迎(在我看来)解决方案/解决方法:由于我无法弄清楚我做错了什么,我最终尝试不将MyClass1-validation.xml中的验证链接到MyClass2-validation.xml,而是改变了MyAction-validation.xml的定义:
<validators>
<field name="class1.class2">
<field-validator type="visitor">
<message></message>
</field-validator>
</field>
<field name="class1">
<field-validator type="visitor">
<message></message>
</field-validator>
</field>
</validators>
此更改解决了问题(fieldErrors()现在包含转换错误),但我非常希望能够像我最初的意图一样链接验证器。
答案 0 :(得分:3)
是的,实际上可以无限期地链接 visitors
验证器。 conversion
验证程序获取完整的字段名称,并检查转换错误映射是否包含该名称。问题是,如果多个链接 visitor
验证程序conversion
,验证程序无法获取实际的完整字段名称(例如class1.class2.myInt
)。
您可以使用visitor
文件中的其他验证器(例如MyClass2-validation.xml
验证程序)轻松测试int
验证程序的链接。