Вы не можете напрямую добавлять данные в модель BindException. Причина, по которой вы не можете это сделать:
errors.getModel().putAll(map);
потому что errors.getModel () создает и возвращает новую карту каждый раз, когда вы вызываете ее. Итак, в вашем примере onBindAndValidate вы получаете новую модель из объекта BindException, добавляете свои данные в модель, а затем выбрасываете ее. Во втором примере вы добавляете данные в модель, а затем возвращаете их.
Другое распространенное использование при использовании модели BindException из методов контроллера будет выглядеть так:
Map errorModel = errors.getModel();
errorModel.putAll(otherMap);
return new ModelAndView("viewName", errorModel );
См. Также: BindException # getModel ()