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

badRequest(views.html.admin()),

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

(SQLException e)

Если я return ok(e.toString()) вместо return badRequest(e.toString()), это работает, я думаю, что проблема может быть в возвращаемом типе 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;
                });

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

    }

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

0
BigPenguin 16 Авг 2014 в 22:48

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;
                });
1
faissalb 17 Авг 2014 в 02:17