如何使用JSR注释组从bean获取属性?

时间:2015-10-12 18:59:15

标签: java spring spring-mvc bean-validation jsr

我有一个表单bean(Employee),可以在不同的屏幕上共享。为了区分所使用的屏幕上的字段,我计划使用带有组名的JSR自定义注释对字段进行分组。

例如,

class Employee {

@Screen(groups={EmployeeScreen.class})
private employeeNo;

@Screen(groups={EmployeeScreen.class})
private employeeName;

@Screen(groups={RoleScreen.class})
private roleName;

我怎样才能读取与组名相关联的bean的所有属性名称(EmployeeScreen和RoleScreen)。任何帮助将非常感谢。感谢。

1 个答案:

答案 0 :(得分:1)

Bean Validation提供元数据API,因此只要您可以访问Validator实例,就可以执行以下操作:

BeanDescriptor beanDescriptor = validator.getConstraintsForClass( Employee.class );

Set<PropertyDescriptor> propertyDescriptors = beanDescriptor.getConstrainedProperties();

for(PropertyDescriptor propertyDescriptor : propertyDescriptors) {
    Set<ConstraintDescriptor<?>> descriptorsForGroup = propertyDescriptor.findConstraints()
                .unorderedAndMatchingGroups( EmployeeScreen.class )
                .getConstraintDescriptors();

     // if descriptorsForGroup is not empty you found a property which has a constraint matching the specified group
     // propertyDescriptor.getPropertyName() gets you the property name

}

这对您有帮助,取决于具体情况。您是否将Bean Validation用作其他框架的一部分?