0

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

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

详细信息类也具有适当的验证。

我们碰巧也从另一个图创建/预填充这个特定的对象图;但是,预填充会留下一些例如必填字段为空。

发生的情况是只有标题得到验证,因为这是在 save 方法运行时提交的表单。是否也可以强制验证细节(通过我声明的访问者),而实际上细节在标题表单中没有任何表单元素?

我想让它保持干燥,并且不必在标头操作的 validate() 方法中进行显式验证。

4

1 回答 1

0

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

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

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

于 2011-01-14T20:06:56.657 回答