我刚刚开始学习我公司所需的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)
执行,则验证错误对模板不可见。
答案 0 :(得分:0)
postComment
方法中发生了验证错误。调用show(post.postId)
会有效地触发HTTP重定向,因此验证错误会丢失(因为服务器是无状态的)。