Struts 2:使用ValidationInterceptor + Visitor验证子集合

时间:2011-01-12 21:02:45

标签: validation model struts2 xml-validation visitor

我有一个模型对象,其中包含一个标题 - 细节关系中的子集合,标题在一个操作类(和表单)中处理,详细信息在单独的操作类(和表单)中编辑。我希望能够在保存标题对象时对标题中的整个对象图进行完整验证;我已经在标题-validation.xml内声明了一个访问者:(我们在这个项目中使用了XML验证)

<field name="details">
    <field-validator type="visitor" />
</field>

详细信息类也有正确的验证。

我们碰巧还从另一个图创建/预填充此特定对象图;然而,预填充会留下一些例如必填字段为空。

只会对标头进行验证,因为这是保存方法运行时提交的表单。是否有可能强制验证细节(通过我声明的访问者),实际上细节在标题表单中没有任何表单元素?

我想保持DRY,而不必在header动作的validate()方法中进行显式验证。

1 个答案:

答案 0 :(得分:0)

部分问题是,当验证运行时,struts只能看到从表单创建的对象。如果表单中未以某种方式引用详细信息列表,则xml验证将无法查看该信息以进行验证。

一种可能的解决方案是通过隐藏字段在表单中包含详细信息。您可以遍历列表,并为每个详细信息对象添加隐藏字段。您可能需要某种自定义数据转换器,除非您想要为详细信息对象的每个数据成员创建一个隐藏字段。

除此之外,我无法通过xml验证看到任何方法。

相关问题