Play Framework AJAX возвращает объект при badRequest ()

Я знаю, что badRequest () в игровом фреймворке может привести к повторной отрисовке страницы, например,

badRequest(views.html.admin()),

но я хотел бы вернуть String, в моем случае SQLException.

(SQLException e)

Если я return ok(e.toString()) вместо return badRequest(e.toString())it работает, я думаю, что проблема может быть в возвращаемом типе badRequest. Если я предупреждаю данные, которые я получаю от вызова ajax, я получаю за неверный запрос [Object] [object].

Можно ли вообще вернуть String в badRequest () в java play framework?

Мой код 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;
                });

at alert(err) я всегда получаю [Object] [Object], когда вызываю SQLException.

Это моя функция 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);
        }

    }

Заранее спасибо :), это меня очень беспокоит! Ценю вашу помощь!


person BigPenguin    schedule 16.08.2014    source источник


Ответы (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;
                });
person faissalb    schedule 16.08.2014