【问题标题】:Problems with Grails 404 UrlMappingGrails 404 UrlMapping 的问题
【发布时间】:2010-11-15 03:09:45
【问题描述】:

我在让 Grails 将我的 404 错误映射到文档中的错误控制器时遇到了一些问题。我正在运行 Grails 1.3.5,当我将以下映射添加到默认应用程序时:

“404”(控制器:'errors',动作:'notFound')

它适用于映射 500 错误,但不适用于 404。我似乎记得以前遇到过这个问题,并且它与 Tomcat(与 Jetty)有关,但我不记得有修复,或者我认为它现在可能已经解决了。

我尝试访问未定义的资源,例如 http://localhost:8080/appName/controllerName/blah,但我得到的只是默认的 Tomcat 404。

我正在做一个标准的 grails run-app 用于测试并尝试让它工作。

【问题讨论】:

  • 我现在尝试重现该问题,但实际上,我尝试的一切(转发到视图,转发到控制器/动作;运行应用程序,生产模式 WAR)都按预期工作。你能提供一个可重复的测试吗?
  • 这个问题对我来说是不可重现的(尝试了很多)。 - 提问者根本没有提供反馈。 - 否决问题。 - 谢谢。
  • 突破!如果我在错误控制器方法中重定向似乎对我有用,但如果我尝试呈现页面则不行。我将尝试设置一个 bitbucket 项目并上传一个示例。
  • 我在 Grails 1.3.6 中得到了这个...

标签: grails


【解决方案1】:

删除空格后问题解决

“404”(控制器:'errors',操作:'notFound')

【讨论】:

  • 这听起来像是一个疯狂的答案,但它也对我有用。
【解决方案2】:

将以下代码添加到应用程序的 scripts/Events.groovy

import groovy.xml.StreamingMarkupBuilder

//modify the generated web.xml so that it supports being mapped to 'error'
eventWebXmlEnd = {String tmpfile ->
    //find the filter mapping to change
    String filterNm = "grailsWebRequest"
    def root = new XmlSlurper().parse(webXmlFile)
    def gwr = root."filter-mapping".find { it."filter-name" == filterNm }
    if (!gwr.size()) throw new RuntimeException(
        "[fail] No Filter named $filterNm")

    // xml is as expected, now modify it and write it back out
    gwr.appendNode {
        dispatcher("ERROR")
    }
    // webXmlFile is an implicit variable created before event is invoked
    webXmlFile.text = new StreamingMarkupBuilder().bind {
        mkp.declareNamespace("": "http://java.sun.com/xml/ns/j2ee")
        mkp.yield(root)
    }
}

请参阅this post 了解说明。请注意,我已从该帖子中复制了上述脚本,但由于 web.xml 的结构自帖子撰写之日起似乎发生了变化,因此必须对其进行修改。

【讨论】:

  • 对不起,我错了。 - 我现在做了一些实际测试,发现 Grails 1.3.5 不需要这样做。 - 在转发到 viewcontrolleraction 时,使用自定义的 404 映射对我有用。 - 实际上,我无法在 Grails 中重现 404 URL 映射的任何问题。
【解决方案3】:

http://jira.codehaus.org/browse/GRAILS-4232我认为这是一个已知问题

【讨论】:

  • 我刚刚将附加的测试用例从 Grails 1.1 转换为 1.3.5,并在 Tomcat 中运行了 WAR。 - 这个问题似乎不再可重现。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-06
  • 1970-01-01
  • 2013-08-01
  • 2019-10-07
  • 1970-01-01
相关资源
最近更新 更多