代码之家  ›  专栏  ›  技术社区  ›  hvgotcodes

url映射grails

  •  2
  • hvgotcodes  · 技术社区  · 14 年前

    好的,基本上我们有一个链接到我们的系统,是所有小写,但需要骆驼大小写。与其让其他开发人员来解决这个问题,我只想通过url魔术来解决这个问题

    "/myobj/$action?/$id?"{ 
        controller: "myObj"        
    }
    

    2010-07-11 18:14:50,021 ERROR [default] - Servlet.service() for servlet default threw exception
    java.lang.IllegalArgumentException: URL mapping must either provide a controller or view name to map to!
    

    但是,以下工作

     "/myobj/$action?/$id?"(controller: "myObj")
    

    我不明白,考虑到文件。为什么关闭不起作用?这是Grails1.2.0。。。

    1 回复  |  直到 14 年前
        1
  •  8
  •   ig0774    13 年前

    你应该使用

    '/myobj/$action?/$id?' {
        controller = 'myObj'
    }
    

    编辑 here (工作案例是带有命名参数的Groovy函数调用)。在闭包中,您需要直接设置controller属性的值,即使用等号。

    这种差异没有被特别强调 in the Grails URL mapping documentation .

    编辑

    '$myController/$action?/$id?' {
        grailsApplication.getArtefacts('Controller').find { it.name.toLowerCase() == myController.name.toLowerCase }.with { controller = it.name }
    }
    

    我在这里假设(我还没有验证)Grails应用程序在中的MappingCapturingClosure中可用 the DefaultMappingUrlEvaluator .