我有
def exception = request.exception.stackTraceLines
在 Groovy 控制器中。如何获取exception
JavaScript 中的值。
如果您要像这样为您的退货添加例外。
flash.message = message(exception: 'Error: xxx');
你可以像这样得到它
<div class="message" role="status"> ${flash.message} </div>
只需使用 ${ 你的 flash.your_var_name}
您有多种选择来解决此问题。使用 javascript 时,我通常使用可以保存错误消息/堆栈跟踪的包装器。这取决于您希望在何处以及如何进行错误处理。例子:
def book = new Book(params)
book.validate()
render (contentType: "text/json") {[
"data": book,
"errors": book.hasErrors() ? book.errors : null
]}
然后,您可以在取回 JSON 时检查“errors”是否有值,以确定输入中是否存在错误。(Elvis 运算符可能也有效,book.errors ?: null) 我在通常在 JavaScript 中定义的错误回调中处理的其他(未捕获的)异常。(主要是jQuery,(在这种情况下使用malsup jquery.form.js))
$(function() {
$("form").live("submit", function() {
$(this).ajaxSubmit({
error: function (msg) {
/* Catch hard errors here (500's) */
alert("Error occurred: " + msg);
},
success: function(wrapper) {
if (wrapper.errors != null) {
/* Handle model errors here */
} else {
/* Parse data here */
var book = wrapper.data;
}
}
});
return false;
});
你也可以这样做
render(template:"book",model:[book:theBook, exception:exception])
或者这样(没试过,不知道行不行)
render(template:"book",model:[book:theBook, exception:exception!=null?exception:""])
然后像这样从 GSP 访问
${exception.getMessage()}