Grails:无法弄清楚为什么我会得到404

Dav*_*ave 0 grails

我正在使用Grails 1.3.6.我有这个档案......

在grails-app /视图/家庭/设计/ index.gsp中

这是我的HomeController中定义的内容.可悲的是,每当我访问"http:// localhost:port/context-path/design /"时,我都会收到404错误.服务器正常启动,日志中没有错误.我该怎么做才能获得我的页面而不是404?

def index = {
    def folder = params.folder;
    def page = params.page;

    if (page) { 
        try { 
            def contents = IOService.getFileContents(folder, page)  
            response.setContentType("application/json")
            response << contents
        } catch (FileNotFoundException e) { 
            response.status = 404;
        }   // try
    } else { 
        render(view: "/home/${folder}/index") 
    }   // if
}
Run Code Online (Sandbox Code Playgroud)

我的URLMappings文件包含......

static mappings = {
    "/$folder?/$page"{
        controller = "home"
        action = "index"
    }

    "/"(view:"/index")
    "500"(view:'/error')
}
Run Code Online (Sandbox Code Playgroud)

谢谢, - 戴夫

Rob*_*ska 6

如果您希望能够访问

/context-path/home/design
Run Code Online (Sandbox Code Playgroud)

你的行动需要被命名为设计,即

class HomeController {
    def design = {

    }
}
Run Code Online (Sandbox Code Playgroud)

Grails约定总是/context-path/controllerName/actionName(除非你以不同的方式映射grails-app/conf/URLMappings.groovy).

您的示例有点不清楚您尝试访问的路径.解决这两个问题:

  • 如果你想/context-path/design,你需要一个DesignControllerindex动作(因为如果不采取行动在URL提供的是,Grails会查找index动作).
  • 如果你愿意/context-path/home/design,你需要HomeController一个design动作.

编辑:

在评论中,您表示希望能够/context-path/design映射到HomeController索引操作.你可以这样做grails-app/conf/URLMappings.groovy:

"/design"(controller: 'home', action: 'index')
Run Code Online (Sandbox Code Playgroud)