Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么不是';t Playframework自定义验证消息未显示在模板中_Java_Validation_Groovy_Playframework - Fatal编程技术网

Java 为什么不是';t Playframework自定义验证消息未显示在模板中

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

我正在尝试使用play framework执行一些自定义验证,但似乎无法从模板中获取错误

控制器代码为:


        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通过取消浏览器重定向来调用新操作。