Я использую Play Framework, и у меня есть общий прецедент, чтобы обновить модель с помощью формы в действии контроллера. Но у меня есть некоторые проблемы, которые понимают концепцию, потому что это просто работает, если у вас есть форма, которая включает в себя ВСЕ свойства модели. Если у вас есть только частичная форма, например. редактируя только пароль пользовательской модели, этот метод уничтожает модель, поскольку он устанавливает другие свойства модели в значение null. Есть ли «официальное» решение этой проблемы? В любом случае Слушайте обновления только существующих свойств?Play Framework Обработка частичной формы
public static Result update(Long id) {
Model model = Model.findById(id);
Form<Model> filledForm = modelForm.bindFromRequest();
if (filledForm.hasErrors()) {
return badRequest(edit.render(filledForm));
} else {
model.update();
flash("message", "Created new Model!");
return ok(index.render());
}
}
Возможно, решение лежит как-то в том, что метод bindFormRequest() может быть вызван с дополнительными параметрами, как и струнными или Карта струнных? Но я не могу понять цель этого. Некоторое понимание этого было бы замечательно. Спасибо большое!
Это отличный общий подход.Но где именно вы его реализовали? В вашем конкретном проекте или непосредственно в ядре Play? И знаете ли вы, какова цель уже существующего параметра метода bindFromRequest? – linsenfips
Я создал класс CustomForm в своем конкретном проекте, который расширяет класс формы для чтения. Поэтому мне просто нужно использовать свой класс CustomForm вместо того, чтобы играть в ядро, когда мне нужна эта функция частичного привязки. Параметр 'data' содержит данные из запроса (посмотрите на ядро воспроизведения' Form.bindFromRequest() 'source, он создает карту данных и передает ее методу' bind() '). 'AllowedFields' является необязательным параметром, используемым для ограничения привязанных данных (это функция Spring DataBinder). – mguillermin
Думаю, я ошибаюсь, но не ограничиваю привязанные данные тем, что хочу? – linsenfips