为什么render()vs render(“some template.html”)的行为不同

时间:2015-01-09 10:33:59

标签: playframework render playframework-1.x

我刚刚开始学习我公司所需的Play 1.x,我通过Play教程在这部分中创建了一个博客引擎:https://www.playframework.com/documentation/1.2.x/guide4

public static void show(Long id) {
    Post post = Post.findById(id);
    render(post);
}

public static void postComment(Long postId, @Required String author, @Required String content) {
    Post post = Post.findById(postId);
    if (validation.hasErrors()) {
        render("Application/show.html", post); // why not show(post.postId) ?
    }
    post.addComment(author, content);
    show(postId);
}

为什么他们建议通过在验证错误的情况下将其名称作为字符串render("Application/show.html", post);来呈现模板?为什么不只是运行看起来一样的show(post.postId)控制器呢?

只有在渲染时执行模板捕获验证错误(" Application / show.html",post);如果以show(post.postId)执行,则验证错误对模板不可见。

1 个答案:

答案 0 :(得分:0)

postComment方法中发生了验证错误。调用show(post.postId)会有效地触发HTTP重定向,因此验证错误会丢失(因为服务器是无状态的)。