gpt4 book ai didi

ajax - 在URLMappings.groovy中处理AJAX错误的Grails异常处理

转载 作者:行者123 更新时间:2023-12-02 14:53:00 27 4
gpt4 key购买 nike

我有一个Grails应用程序,该应用程序向后端服务器发出HTTP请求以获取其数据。可以关闭该服务器进行维护,并且在发生这种情况时,它将在HTTP响应中向Grails应用返回“站点关闭”消息。 Grails应用正在检测到此情况,并引发自定义SiteDownException。然后在URLMappings.groovy中将其定向到特定的错误页面。

除了用于AJAX请求之外,这还行之有效。似乎发生的情况是触发了“站点向下” URL映射(如预期的那样),然后捕获了所有“500”映射。

URLMappings.groovy

"500"(controller: "error", action: "siteDown", exception: SiteDownException)
"500"(controller: "error", action: "error500")

ErrorController.groovy
def siteDown() {
println ">>>> site down <<<<"
}

def error500() {
println ">>>> 500 <<<<"
}

使用以下方法引发错误
throw new SiteDownException()

对于常规请求,stacktrace显示...
[11/11/13 16:52:50.945 error] SiteDownException occurred when processing request: [POST] /portal/contact/detail - parameters:
fileKeyIdentifier:
mode: add
Stacktrace follows: [org.codehaus.groovy.grails.web.errors.GrailsExceptionResolver http-bio-8080-exec-6]
com.ui.exceptions.SiteDownException
at com.ui.backend.Backend$$EOMu30qx.getResponse(Backend.groovy:118)
at com.ui.backend.Backend$$EOMu30qx.getResponseAsDomainObject(Backend.groovy:41)
at com.ui.contact.ContactService.detail(ContactService.groovy:166)
at com.ui.contact.ContactController.detail(ContactController.groovy:87)
at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:195)
at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)
>>>> site down <<<<

当场,但对于AJAX请求...
    [11/11/13 16:54:09.380 error] SiteDownException occurred when processing request: [POST] /portal/contact/searchBody
Stacktrace follows: [org.codehaus.groovy.grails.web.errors.GrailsExceptionResolver http-bio-8080-exec-7]
com.ui.exceptions.SiteDownException
at com.ui.backend.Backend$$EOMu30qx.getResponse(Backend.groovy:118)
at com.ui.backend.Backend$$EOMu30qx.getResponseAsDomainObject(Backend.groovy:41)
at com.ui.contact.ContactService.searchBody(ContactService.groovy:55)
at com.ui.contact.ContactController.searchBody(ContactController.groovy:23)
at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:195)
at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)
>>>> site down <<<<
>>>> 500 <<<<

最后一位是关键-它显示来自siteDown操作的“site down”消息,以及显示“catch all error500”操作的“500”消息。

谁能帮助解释为什么两个映射都因AJAX错误而被调用?谢谢

最佳答案

我发现了问题。我在jQuery AJAX包装器中遇到了一个错误陷阱:

error: function(XMLHttpRequest,textStatus,errorThrown){
window.location.href = config.contextPath + '/error/error500'; // Error - show the 500 error page
}

因此,SiteDownException正确触发了SiteDown映射,然后AJAX错误处理程序触发了error500映射。

关于ajax - 在URLMappings.groovy中处理AJAX错误的Grails异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19911892/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com