我有一个表单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)。任何帮助将非常感谢。感谢。
答案 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用作其他框架的一部分?