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 для меня. Есть ли способ сделать то же самое красивее?
Ответы
Ответ 1
Скаффман ответил на вопрос, но исчез, поэтому я отвечу ему за него.
Ведение проверки привязки - это привязка и проверка параметров, а не произвольных бизнес-объектов.
Это означает, что если мне нужно выполнить некоторую выборочную проверку некоторых общих данных, которые не были отправлены пользователем - мне нужно добавить какую-то пользовательскую переменную, чтобы сохранить этот статус, а не использовать BindingResult.
Это отвечает на все вопросы, которые у меня были с BindingResult, поскольку я думал, что он должен использоваться как контейнер для любых ошибок.
Снова, спасибо @Skaffman.