我正在使用Play 2.3.1 with Java
我有一个使用动作的表单,应该返回Result ok()。 我的问题是,当它确实返回ok()时,它会将我发送到路由文件上映射的URL,即使它应该保留在同一页面上。
我该如何解决这个/我做错了什么?
我的代码:
行动
public static Result postComment(){
CommentModel comment = Form.form(CommentModel.class).bindFromRequest().get();
comment.author = loggedUser;
if(!comment.content.isEmpty()){
return ok();
}
return null;
}
路线
POST /postComment controllers.Application.postComment()
表格
<form action="@routes.Application.postComment()" method="post">
<label for="comment" class=required>Your comment</label>
<textarea rows="2" name="content"></textarea>
<br/>
<button class="btn btn-primary">Comment</button>
</form>
另外,我怎样才能做到这一点,当动作没有进入'如果'没有任何反应时,因为它总是说我需要返回一个结果?是否有结果返回什么都不做?
答案 0 :(得分:0)
“我有一个使用动作的表单,应该返回结果ok()。我的问题是当它确实返回ok()时它会将我发送到路由文件上映射的URL,即使它应该保持在同一页面上。“
我在这里看不出任何错误。如果您只是返回一个OK / HTTP状态代码200,那么您的客户端/浏览器将完全正确。 Play的路由在调用操作之前发生。也许你在JavaScipt中做了一些在表单成功提交后被激活的东西?
“另外,我怎么能这样做,以便当动作没有进入'如果'没有任何反应时,因为它总是说我需要返回一个结果?是否有一个结果返回什么都没有?“
您必须返回结果。但是,如果您只是想告诉您的客户端POST失败,您可以考虑其中一个400er状态代码,例如400 /错误请求。在播放其a-directive {
display: block;
}
。