如何让Play操作不会将我重定向到另一个页面

时间:2015-06-16 16:11:46

标签: java playframework playframework-2.0 playframework-2.3

我正在使用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>

另外,我怎样才能做到这一点,当动作没有进入'如果'没有任何反应时,因为它总是说我需要返回一个结果?是否有结果返回什么都不做?

1 个答案:

答案 0 :(得分:0)

“我有一个使用动作的表单,应该返回结果ok()。我的问题是当它确实返回ok()时它会将我发送到路由文件上映射的URL,即使它应该保持在同一页面上。“

我在这里看不出任何错误。如果您只是返回一个OK / HTTP状态代码200,那么您的客户端/浏览器将完全正确。 Play的路由在调用操作之前发生。也许你在JavaScipt中做了一些在表单成功提交后被激活的东西?

“另外,我怎么能这样做,以便当动作没有进入'如果'没有任何反应时,因为它总是说我需要返回一个结果?是否有一个结果返回什么都没有?“

您必须返回结果。但是,如果您只是想告诉您的客户端POST失败,您可以考虑其中一个400er状态代码,例如400 /错误请求。在播放其a-directive { display: block; }