Подтвердить что ты не робот

Spring - добавление BindingResult к вновь созданному атрибуту модели

Моя задача - создать атрибут модели с помощью заданных параметров запроса, проверить его (в том же методе) и передать его целиком в представление.

Мне был предоставлен этот пример кода:

@Controller
class PromotionController {

    @RequestMapping("promo")
    public String showPromotion(@RequestParam String someRequestParam, Model model) {
        //Create the model attribute by request parameters
        Promotion promotion = Promotions.get(someRequestParam); 

        //Add the attribute to the model
        model.addAttribute("promotion", promotion); 

        if (!promotion.validate()) {
            BindingResult errors = new BeanPropertyBindingResult(promotion, "promotion");
            errors.reject("promotion.invalid");
            //TODO: This is the part I don't like
            model.put(BindingResult.MODEL_KEY_PREFIX + "promotion", errors);
        }
        return 
    }
}

Эта вещь действительно работает, но эта часть с созданием ключа с MODEL_KEY_PREFIX и именем атрибута выглядит очень хакерским, а не стилем Spring для меня. Есть ли способ сделать то же самое красивее?

4b9b3361

Ответ 1

Скаффман ответил на вопрос, но исчез, поэтому я отвечу ему за него.

Ведение проверки привязки - это привязка и проверка параметров, а не произвольных бизнес-объектов.

Это означает, что если мне нужно выполнить некоторую выборочную проверку некоторых общих данных, которые не были отправлены пользователем - мне нужно добавить какую-то пользовательскую переменную, чтобы сохранить этот статус, а не использовать BindingResult.

Это отвечает на все вопросы, которые у меня были с BindingResult, поскольку я думал, что он должен использоваться как контейнер для любых ошибок.

Снова, спасибо @Skaffman.