根据我模型中的数据,我无法设置具有选定值的重复字段.
目前我在我的用户模型中:
@Required
public String username;
@ManyToMany
public List<Stay> places;
Run Code Online (Sandbox Code Playgroud)
而我的Stay模型:
@Required
@ManyToOne
public Place place;
@Required
@Formats.DateTime(pattern="yyyy-MM-dd")
public Date startDate;
@Required
@Formats.DateTime(pattern="yyyy-MM-dd")
public Date endDate;
Run Code Online (Sandbox Code Playgroud)
我的Scala视图形式:
@(formUser: Form[User])
...
@repeat(formUser("places"), min = 1) { stayField =>
<div id="groupLocationField">
// Don't manage to reach User->Places->Place
@select(formUser("stayField.places"), options(Place.optionsTitle))
@inputDate(formUser("stayField.startDate"))
@inputDate(formUser("stayField.endDate"))
</div>
}
Run Code Online (Sandbox Code Playgroud)
stayField是一个包含的Form.Field类型
Field(null,places[1],ArrayBuffer(),None,ArrayBuffer(),Some(Paris Mon Oct 29 00:00:00 CET 2018 Wed Jun 11 00:00:00 CEST 2014 null))
但似乎已将我的地方和日期转换为字符串.@stayField包含我的Stay模型toString方法的值.
@stayField.value = Paris Mon Oct 29 00:00:00 CET 2018 Wed Jun 11 00:00:00 …Run Code Online (Sandbox Code Playgroud) 我无法从我的视图中访问ValidationError消息.我设法在我的视图中获得的唯一输出是:
[ValidationError(username,Too short, sorry ;),[6])]
[ValidationError(password,Confirmation password doesn't match,[])]
Run Code Online (Sandbox Code Playgroud)
我只想输出错误消息:"太短,抱歉;)"和"确认密码不匹配".
我找到的解决方法是从表单中调用特定字段,然后访问错误消息:
@form("password").error.map(_.message).getOrElse("")
Run Code Online (Sandbox Code Playgroud)
谢谢,
我的观点register.scala.html:
@if(form.hasErrors) {
<div class="form-group">
<div class="alert alert-danger col-lg-6 text-center">
@for((key, vamlue) <- form.errors){
@value<br />
}
</div>
</div>
}
Run Code Online (Sandbox Code Playgroud)
我的控制器:
public static Result registerSubmit(){
Form<User> registerForm = form(User.class).bindFromRequest();
String passwordConfirmation = registerForm.field("passwordConfirmation").value();
if(!registerForm.field("password").valueOr("").equals(passwordConfirmation)){
ValidationError e = new ValidationError("password", "Confirmation password doesn't match");
registerForm.reject(e);
}
if (registerForm.hasErrors()){
// Handle Error
return badRequest(register.render(registerForm));
} else {
// Check if all data are fine
// TODO : Redirect to …Run Code Online (Sandbox Code Playgroud)