我知道play框架中的badRequest()可能会导致重新渲染页面,例如,

badRequest(views.html.admin())

但我想返回一个String,在我的情况下是SQLException。


(SQLException e)


如果我return ok(e.toString())而不是return badRequest(e.toString())有效,我认为badRequest的返回类型可能是问题。如果我警告从ajax调用中获取的数据,则会收到错误的请求[Object] [object]。

在Java Play框架中甚至有可能在badRequest()处返回字符串吗?

我的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);
        }

    }


在此先感谢:),这真的让我感到困扰!
感谢你的帮助!

最佳答案

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

我认为最糟糕的部分在于触发ajax调用的Javascript代码,您可以将其张贴在此处会很有用。

当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;
                });

关于java - Play Framework AJAX在badRequest()处返回Object,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25342817/

10-10 13:18