我正在尝试使用Grails标记SubmitToRemote处理失败消息(例如,验证域对象上的错误)。

我的标签SubmitToRemote是:

<g:submitToRemote
      url="[action: 'save']"
      update="[success: 'wizard', failure: 'error']"
      onFailure="onFailure(data, code)"
      name="submit"
      class="btn btn-large btn-inverse"
      value="Save"/>

我的onFailure函数是:
   <g:javascript>
        function onFailure(data, code){
            document.getElementById('errors').style.display = 'inline';
            $('#errors').html(data);
        }

    </g:javascript>

最后,grails Action :
(...)
if(!plan.validate()){
    render status: 400, text: "This plan cannot be saved. Fill all fields and try again."
    return
}

我该如何正确设置?

最佳答案

我不知道现在是否有帮助,但可以帮助其他人。

我能够成功调用onFailure 方法并将消息传递给

所以这就是我的方法,我在 Controller 中设置错误代码和文本,如下所示:

render(status: 403, text: 'Request failed to complete due to some error.')

然后在gsp上,我使用 XMLHttpRequest 拉出了消息:
<g:formRemote onFailure="onFailure(XMLHttpRequest.responseText)" ...>

根据我的发现,我看到grails结束了工作,并在ajax下为 onFailure 函数创建了代码。
error:function(XMLHttpRequest,textStatus,errorThrown){onFailure(XMLHttpRequest.responseText)...



希望这可以帮助!

10-04 21:49