Я обновляюсь с Play 2.5 до 2.7, и у меня проблема с сохранением форм. Когда поля изменяются, и я вызываю Model.update (), изменения не сохраняются в базе данных (даже если они показывают измененные при отладке до того, как будет выполнено обновление)
Если, однако, я их специально установил, тогда они сохраняется Поэтому он должен что-то делать с тем фактом, что он не обнаруживает изменения и не видит объект как измененный. Я использую методы получения и установки в модели, и все свойства являются частными.
Это функция контроллера (с двумя строками для сохранения этих двух полей)
@Check(UserTask.MANAGER)
public Result updateSceneSet(Http.Request request) {
Messages messages = messagesApi.preferred(request);
Form<StreamingSceneSet> form = formFactory.form(StreamingSceneSet.class).bindFromRequest(request);
if (form.hasErrors()) {
if (form.rawData().get("id") != null && form.rawData().get("id").length() > 0) {
long itemId = Long.parseLong(form.rawData().get("id"));
StreamingSceneSet item = StreamingSceneSet.findById(itemId);
return badRequest(views.html.streaming.editSceneSetView.render(form, item, messages, request));
} else {
return badRequest(views.html.streaming.createSceneSetView.render(form,messages, request));
}
}
// Form is OK, has no errors we can proceed
StreamingSceneSet item = form.get();
item.setName(item.getName());
item.setDescription(item.getDescription());
// Insert or update?
if (item.getId() == null) {
item.insert();
flash("success", messages().at("addedSceneSet", item.getName()));
} else {
item.update();
flash("success", messages().at("updatedSceneSet", item.getName()));
}
return redirect(routes.Streaming.sceneSets());
}