无法解码Grails应用程序中的urlMapping

时间:2012-07-03 10:15:51

标签: grails grails-controller

问题:   我能够执行我的Controller(ReviewMetricsController)的默认操作(listLatest)。但是,我无法使用表单提交显式调用其他操作(索引)。 我正在使用Grails 2.0.4并在Eclipse IDE中使用Grails插件在开发模式下运行我的应用程序。

详情: 我的gsp中有一个表单,如下所示

    <g:form name="queryForm"
        url="[controller:'reviewMetrics', action:'index']">
        <g:actionSubmit value="submit" />
    </g:form>

当我提交上述表格时,我收到404错误

The requested resource (/reviewmetricsapp/reviewMetrics/index) is not available

我的控制器(reviewMetricsController.groovy)如下所示

package reviewmetricsapp

class ReviewMetricsController {

    static scope = "session"
    static defaultAction = "listLatest"
    def gatherMetricsService
    def grailsApplication
    def latestMetrics

    def index() {
        render(view:"dashboard", model: [model: latestMetrics])
    }

    def listLatest(){
        println grailsApplication.config.metricsapp.perlScript.loc
        latestMetrics = gatherMetricsService.getLastWeekMetrics()
        println "printing ${latestMetrics}"
        render(view:"showMetrics", model: [metrics: latestMetrics])
    }

}

我的urlMappings.groovy看起来如下所示

class UrlMappings {

    static mappings = {
        "/$controller/$action?/$id?"{ constraints {
                // apply constraints here
            } }

        "/reviewMetrics/index"{
            controller="reviewMetrics"
            action="index"
        }

        "/"(view:"/index")
        "500"(view:'/error')
    }
}

感谢任何帮助

1 个答案:

答案 0 :(得分:1)

  1. 您无需为用例更改URLMappings - 文件。 (删除reviewMetrics / index的特殊情况处理 - 从第一条规则处理)

  2. 请使用以下表单定义:

    <g:form name="queryForm"
       controller="reviewMetrics"
       action="index">
       [..]
    </g:form>
    
  3. 请仔细检查您的操作是否被访问 - 只需放置一个普通的index.gsp并且不在乎控制器内部。我猜这个错误在别的地方。