我知道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);
}
}
在此先感谢:),这真的很烦我! 感谢您的帮助!
答案 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;
});