Grails webapp不显示gsp页面

时间:2016-09-29 16:12:28

标签: grails gsp

我遇到一些显示.gsp文件的问题,我不确定为什么。我有以下代码:

class UrlMappings{
    static mappings = {
        "/"(controller: 'index', action: 'index')
    }
}

class IndexController{
    def index(){
        render(view: "index")
    } 
}

然后在grails-app / views / index中我有index.gsp:

<!DOCTYPE html>
<html>
    <head>
        <title>Hello World</title>
    </head>
    <body>
        Hello World
    </body>
</html>

当我点击http://localhost:8080/时,我收到500状态代码错误。但是,如果我将IndexController更改为

render "Hello World" 

它将显示&#34; Hello World&#34;,因此应用程序似乎正在启动。

有谁知道发生了什么? stacktrace的一部分:

17:09:40.677 [http-nio-8080-exec-1] ERROR o.a.c.c.C.[.[.[.[grailsDispatcherServlet] - Servlet.service() for servlet [grailsDispatcherServlet] in context with path [] threw exception [Could not resolve view with name '/index/index' in servlet with name 'grailsDispatcherServlet'] with root cause
javax.servlet.ServletException: Could not resolve view with name '/index/index' in servlet with name 'grailsDispatcherServlet'

1 个答案:

答案 0 :(得分:0)

您收到的错误是由于Grails无法找到您视图的位置。

  

完全避免在框架中具有某些预定义上下文的名称(只是建议在您的情况下不是问题)。

     

正如您使用index控制器将其更改为其他内容

因此,如果您点击URL http://localhost:8080/URLMapping会将其重定向到您的控制器index操作,它将呈现相应的视图。

如下所示

class UrlMappings{
    static mappings = {
        "/"(controller: 'provision', action: 'index')
    }
}

class ProvisionController{

    def index(){ 
        // You don't really need to render it grails will render
        // it automatically as our view has same name as action
        render(view: "index")   
    } 
}

然后在grails-app/views/provision/创建index.gsp

<!DOCTYPE html>
<html>
    <head>
        <title>Hello World</title>
    </head>
    <body>
        Hello World
    </body>
</html>

您在错误的位置添加了视图grails-app/views/index.gsp将其移至grails-app/views/provision/index.gsp

  

在上面的示例中将您的IndexController重命名为ProvisionController