0

我有

def exception = request.exception.stackTraceLines

在 Groovy 控制器中。如何获取exceptionJavaScript 中的值。

4

3 回答 3

1

如果您要像这样为您的退货添加例外。

flash.message = message(exception: 'Error: xxx');

你可以像这样得到它

<div class="message" role="status"> ${flash.message} </div>

只需使用 ${ 你的 flash.your_var_name}

于 2012-10-08T14:54:35.150 回答
1

您有多种选择来解决此问题。使用 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;
});
于 2012-10-08T21:50:08.350 回答
0

你也可以这样做

render(template:"book",model:[book:theBook, exception:exception])

或者这样(没试过,不知道行不行)

render(template:"book",model:[book:theBook, exception:exception!=null?exception:""])

然后像这样从 GSP 访问

${exception.getMessage()}
于 2012-10-08T15:25:55.197 回答