Java 为什么不是';t Playframework自定义验证消息未显示在模板中
我正在尝试使用play framework执行一些自定义验证,但似乎无法从模板中获取错误 控制器代码为:Java 为什么不是';t Playframework自定义验证消息未显示在模板中,java,validation,groovy,playframework,Java,Validation,Groovy,Playframework,我正在尝试使用play framework执行一些自定义验证,但似乎无法从模板中获取错误 控制器代码为: User user = User.findByEmail(email); if(user != null) { Logger.warn("User account already created for email %s", email); validation.addError("email", "This
User user = User.findByEmail(email);
if(user != null) {
Logger.warn("User account already created for email %s", email);
validation.addError("email", "This email address already in use.");
params.flash();
flash.error("Please correct the error below!");
signup();
}
以及signup.html模板:
#{error 'email' /}
#{错误'电子邮件'/}
我可以看到控制器看到重复的电子邮件,但错误消息没有出现在模板中
上面的代码正确吗?因为您要转到另一个视图(即重定向回注册视图),Play执行重定向,这意味着错误不再在范围内,因为注册视图被视为新请求 要解决这个问题,您需要为下一个请求保留验证消息,这是通过使用
validation.keep()
函数实现的
因此,更改代码,以便在调用signup()
之前,调用validation.keep()
您的代码应该如下所示
if(user != null) {
Logger.warn("User account already created for email %s", email);
validation.addError("email", "This email address already in use.");
params.flash();
flash.error("Please correct the error below!");
validation.keep();
signup();
}
这很有道理,谢谢。这是播放重定向还是浏览器重定向?为了保持无状态,Play通过取消浏览器重定向来调用新操作。