Play Framework AJAX在badRequest()处返回Object

时间:2014-08-16 18:48:20

标签: java ajax playframework return-type bad-request

我知道play框架中的badRequest()可能会导致重新呈现页面,

badRequest(views.html.admin())

但是我想返回一个String,在我的例子中是一个SQLException。

  

(SQLException e)

如果我return ok(e.toString())而不是return badRequest(e.toString())它有效,我认为badRequest的返回类型可能就是问题所在。如果我提醒我从ajax调用得到的数据,我得到了错误的请求[对象] [对象]。

甚至可以在java play框架中的badRequest()处返回一个String吗?

我的Javascript代码是这样的:)

$("#deleteBuildingConfirm").click(function(q){
                       $('#confirmDelete').modal('hide');

                       $.ajax({
                        type : 'POST',
                        url : '@routes.Admin.deleteBuilding()',
                        data : {
                            id: idOfBuild, name: nameOfBuild
                        },
                        success : function(data) {

                            alert(data);
                         /** Wenn ein gebäude.. */

                        },
                         error : function(err) {

                            alert(err);             
                            }

                        });

                            return true;
                });

alert(err)当我触发SQLException时,我总是得到[Object] [Object]。

这是我的Java函数:

public static Result deleteBuilding(){

        final Map<String, String[]> values = request().body().asFormUrlEncoded();
        final Long idToDelete = Long.parseLong(values.get("id")[0]);

        final String nameToDelete = values.get("name")[0];

        String message="Deleted on server, row with id: "+idToDelete+"\n "
                +"Building with name: "
                +nameToDelete+" has been deleted.";

        try {
            Building.delete(idToDelete);
            return ok(message);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            final String badMessage = e.toString();

            return badRequest(badMessage);
        }

    }

在此先感谢:),这真的很烦我! 感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

badRequest("Some String")可以使用它来返回字符串,甚至Ok()接受的任何对象都没有问题。

我认为不好的部分会在你的Javascript代码上触发ajax调用,你可以在这里发布它会很有用。

当jQuery调用erro回调时,他给它一个对象,其中包含处理所有错误所需的所有信息,如果你对请求的内容感兴趣,只需将代码更改为如下所示:

$("#deleteBuildingConfirm").click(function(q){
                       $('#confirmDelete').modal('hide');

                       $.ajax({
                        type : 'POST',
                        url : '@routes.Admin.deleteBuilding()',
                        data : {
                            id: idOfBuild, name: nameOfBuild
                        },
                        success : function(data) {

                            alert(data);
                         /** Wenn ein gebäude.. */

                        },
                         error : function(err) {
                            // use err.responseText instead of err
                            alert(err.responseText);            
                            }

                        });

                            return true;
                });