0

我试图做一些奇怪的事情,但我需要这样做......

我在两个控制器和 2 个验证器中有两个 bean:假设......

BeanA {
    private String propertyA;
}

BeanB {
    private String propertyB;
}

为了保存 bean A,我还需要验证 bean B,所以我正在尝试执行以下操作:

@RequestMapping(params = ACTION_SAVE_BEAN_A)
public final void doActionSave (@ModelAttribute(value = ServletContextKeys.BEAN_A) BeanA beanA,
        Errors errors, ActionRequest actionrequest, ActionResponse actionResponse, PortletSession portletSession) {

    BeanB beanB = getBeanB();
    validatorBeanB.validate(beanB, errors);
    if (!errors.hasErrors()) {
        //Save beanA
        beanA.save();
    }

}

我的验证器代码:

validatorBeanB{

private void validatePropertyB(Errors errors) {
    ValidationUtils.rejectIfEmptyOrWhitespace(errors, PROPERTY_B, BEANB_ERRORS + PROPERTY_B);
      }

   }

但是执行这段代码,我收到一个错误:

Caused by: org.springframework.beans.NotReadablePropertyException: Invalid property 'propertyB' of bean class [BeanA]: Bean property 'propertyB' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter?

我理解错误,但我需要找到解决方法来修复它,而且我不能只将 propertyB 放在 beanA 中(实际上,它不仅仅是一个属性,bean 中还有更多......)

有任何想法吗?提前致谢。

4

1 回答 1

0

我找到了解决方案。我没有在方法中声明错误(它带有与目标字段关联的 Bean A),而是在验证调用之前创建了一个新错误。就像是:

BindingResult errors = new BeanPropertyBindingResult(beanB,"BeanB");

BeanBValidator.validate(beanB, errors);
于 2013-02-04T10:46:06.000 回答