簡體   English   中英

在Spring中,如何指定BindingResult實現

[英]In Spring, how do you specify the BindingResult implementation

我想在控制器中指定BindingResult的實現類型。 有沒有辦法做到這一點? 目前看來,Spring必須自己確定實現類型(恰好是BeanPropertyBindingResult)。 我懷疑某個地方缺少某個配置,或者只需要在Controller的方法簽名中指定實際類型。

例:

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

您無需為要執行的操作自定義BindingResult 您需要實現BindingErrorProcessor並在WebDataBinder中使用它。 它負責將錯誤添加到BindingResult中 ,並允許您使用自定義的Errors實現。 這是您在控制器中使用它的方式...

@Controller
public class MyFormController {
    ...

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

混合綁定和驗證是不好的做法,類應該承擔單一責任。 您不應該在BindingResult本身中進行驗證。

您必須在@ModelAttribute前面添加ModelAndView,例如:

public ModelAndView continue(ModelAndView model, @ModelAttribute("model") ObjectType objectName){
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM