0

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

详细信息:我的 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

我的 Controller( 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')
    }
}

任何帮助表示赞赏

4

1 回答 1

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

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

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

于 2012-07-03T12:50:54.243 回答