0

我想在控制器中指定 BindingResult 的实现类型。有没有办法做到这一点?目前,Spring 似乎必须自己确定实现类型(恰好是 BeanPropertyBindingResult)。我怀疑我在某处缺少配置,或者我只需要在控制器的方法签名中指定实际类型。

例子:

/**
 * {@inheritDoc}
 */
@Override
public ModelAndView continue(@ModelAttribute("model") @Valid final T model, final BindingResult results) { ... }
4

2 回答 2

1

您不需要自定义BindingResult来完成您想做的事情。您需要实现BindingErrorProcessor并在WebDataBinder中使用它。它负责将错误添加到BindingResult并允许您使用自定义错误实现。这是您在控制器中使用它的方式...

@Controller
public class MyFormController {
    ...

    @InitBinder
    public void initBinder(WebDataBinder binder) {
        binder.setBindingErrorProcessor(new MyCustomBindingErrorProcessor());
    }
}

混合绑定和验证是不好的做法,类应该有一个单一的责任。您不应该在 BindingResult 本身中进行验证。

于 2012-12-20T15:25:07.180 回答
-1

你必须在前面添加 ModelAndView @ModelAttribute

public ModelAndView continue(ModelAndView model, @ModelAttribute("model") ObjectType objectName){
}
于 2012-12-20T12:54:11.247 回答