Я с трудом раз выяснить, как сделать сценарий обновления в Play 2 JavaPlay 2 Java - проверить форму с помощью заполнения и bindFromRequest в сценарии обновления
У меня есть
User.java модель
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public Long id;
@Constraints.Required
public String email;
@Constraints.Required
public String fullname;
}
И я хочу, чтобы обновить его, так что в моем контроллере я
public Result update(Long id) {
ObjectNode result = Json.newObject();
User employee = userService.get(id);
Form<User> userForm = formFactory.form(User.class).fill(employee);
// This won't trigger validation because it uses fill() not bind()
if (userForm.hasError()) {
result.set("message", userForm.errorsAsJson());
return badRequest(result);
}
// do update here
}
Тогда я пытаюсь какой-то другой подход, как этот
public Result update(Long id) {
ObjectNode result = Json.newObject();
User employee = userService.get(id);
Form<User> userForm = formFactory.form(User.class).fill(employee);
userForm = userForm.bindFromRequest();
// This will trigger validation but bindFromRequest will override my fill(employee) before.
if (userForm.hasError()) {
result.set("message", userForm.errorsAsJson());
return badRequest(result);
}
// do update here
}
bindFromRequest()
выше переопределит мой fill(employee)
. Я не хочу этого делать, потому что когда в моем запросе я просто хочу заполнить fullname
, а не мой email
, мое свойство email
вызовет его необходимую проверку.
Так что мой вопрос в том, как я могу только обновить свой атрибут fullname
с формой, которую я заполняю, используя существующее значение и все еще вызывая ограничения проверки из моей модели?
Привет, не могли бы вы его решить? – jschnasse