我正在使用Grails 3,正在使用模板页面,其中包含网站其余部分的大纲。我正在尝试使用以下代码从控制器调用方法,如the official documentation所建议的那样:
<g:include controller="layouts" action="loadUsers" />
我的控制器如下所示:
class LayoutsController {
def loadUsers() {
println("we are in here")
}
}
当我的嵌入式tomcat上执行include语句时,我收到以下错误:
[http-nio-8443-exec-4] ERROR o.a.c.c.C.[.[.[.[grailsDispatcherServlet] - Servlet.service() for servlet grailsDispatcherServlet threw exception
javax.servlet.ServletException: Could not resolve view with name 'loadUsers' in servlet with name 'grailsDispatcherServlet'
当然,错误是有道理的,因为我没有那个视图/ gsp页面。我想简单地调用一个方法在后端创建一些东西,而不是将它绑定到gsp页面。这可能吗?基本上,类似于JSF的方法,我可以在bean上执行公共方法。
答案 0 :(得分:1)
调用控制器操作时,除非操作调用redirect
或render
之类的操作,否则将呈现视图。这是设计以及控制器动作应该如何表现的。如果视图不存在,则会发生错误。
目前尚不清楚你要做什么,但如果你只是试图调用一些逻辑而你不希望从GSP做一些不寻常的事情,那么你可以通过调用自定义GSP标记来完成它,该标记可以完成您想要完成的任务。通常,所有类似的事情都在渲染视图之前完成(因此,在涉及任何GSP代码之前)。