Java 我可以在xxxx-validation.xml中为列表配置验证吗?

Java 我可以在xxxx-validation.xml中为列表配置验证吗?,java,struts2,Java,Struts2,现在,在我的保存操作中,我定义了一个名为booking的模型,如下所示: Class BookingAction { private Booking booking; ... } Class Booking { private String bookingNo; private String status; ... private List<Part>parts = new ArrayList<Part>(); ...

现在,在我的保存操作中,我定义了一个名为booking的模型,如下所示:

Class BookingAction {
       private Booking booking;
       ...
}

Class Booking {
  private String bookingNo;
  private String status;
  ...
  private List<Part>parts = new ArrayList<Part>(); 
  ...
}

Class Part {
  private String partNo;
  ...
}
类预订操作{
私人订票;
...
}
订票{
私人字符串预订编号;
私有字符串状态;
...
private Listparts=new ArrayList();
...
}
班级部分{
私有字符串partNo;
...
}
我还为该操作定义了一个验证xml文件,例如

<validators>
    <field name="booking.status">
        <field-validator type="requiredstring">
            <param name="trim">true</param>
            <message>${getText("MandatoryFieldEmpty",{"%{getText(\"BookingMain.status\")}"})}</message>
        </field-validator>
    </field>

    <field name="booking.bookedBy">
        <field-validator type="requiredstring">
            <param name="trim">true</param>
        <message>${getText("MandatoryFieldEmpty",{"%{getText(\"BookingMain.bookedBy\")}"})}</message>
    </field-validator>
    </field>
....

真的
${getText(“MandatoryFieldEmpty”,{“%{getText(\'BookingMain.status\”)}
真的
${getText(“MandatoryFieldEmpty”,{“%{getText(\'BookingMain.bookedBy\”)}
....
我也可以为零件定义这种配置吗

零件在列表中,列表是Booking的属性,有人能告诉我是否可以在BookingAction validation.xml中进行零件验证吗?

您可以使用

您应该在
BookingAction validation.xml
中添加与
部分
对象相关的
片段,以激活访客验证

然后,您需要在
零件
对象的包(而不是
操作
对象的包)下创建一个
零件验证.xml
,并在其中指定单个零件元素的规则

Struts2验证拦截器将负责使用第二个文件验证列表中的每个元素

作为一个很好的副作用,如果您在另一个
操作
中包含一个
列表
对象,您对
部分
对象的验证将已经存在,而无需在另一个文件中重写它(您只需在Action-validation.xml文件中声明验证程序片段)


编辑

通过使用更具体的
bean context validation.xml
文件,仅在某些特定情况下,您可以指定不同的上下文来触发同一bean的进一步补充验证


阅读,尤其是
访客验证示例
(以及下面的
使用表达式验证器进行访客验证
)部分。

+1了解副作用。您还可以提到
上下文
参数。感谢@AleksandrM的建议,添加了它