我知道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/