gpt4 book ai didi

java - 使用 Play Framework 在 View 中格式化 ValidationError

转载 作者:行者123 更新时间:2023-11-30 06:20:48 26 4
gpt4 key购买 nike

我无法从我的 View 中访问 ValidationError 消息。在我看来,我设法获得的唯一输出是:

[ValidationError(username,Too short, sorry ;),[6])]
[ValidationError(password,Confirmation password doesn't match,[])]

我只想输出错误消息:“太短了,抱歉 ;)”和“确认密码不匹配”。

我找到的解决方法是从表单调用特定字段,然后访问错误消息:

@form("password").error.map(_.message).getOrElse("")

谢谢,

我的观点 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>
}

我的 Controller :

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 Login Page
return ok(register.render(registerForm));
}
}

最后是模型 User.java :

@Required
@MinLength(6)
String username;

@Required
@Email
String email;

@Required
@MinLength(6)
String password;

最佳答案

听起来您想收集所有表单错误并将它们显示在表单顶部。我认为这是您想要在 HTML 模板中使用的代码块

@if(form.hasErrors) {
<div class="form-group">
<div class="alert alert-danger col-lg-6 text-center">
@for(entry <- form.errors.entrySet){
@for(error <- entry.getValue){
@error.message <br/>
}
}
</div>
</div>
}

如果将 form.errors 映射从 Java 映射转换为 Scala 映射,您可以使代码块比嵌套的 for 循环更简洁一些,但这应该可以完成工作。

关于java - 使用 Play Framework 在 View 中格式化 ValidationError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21338859/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com