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

@ModelAttribute次のような前に ModelAndView を追加する必要があります。

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