我遇到一些显示.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'
答案 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
。