我最近开始了一个新的 Grails 项目,我正在尝试尽可能多地使用脚手架功能。我使用 grails install-templates 安装了模板并对其进行了修改,以便在某些方法可用时它们依赖于当前控制器(例如,如果可用,show 方法将调用 renderShow 方法)。
我遇到的问题是,当从脚手架模板调用该方法时,找不到它,因此引发了异常。如果从实际控制器调用相同的方法,它会按预期工作。
我错过了什么?
为了说明这个问题,我创建了一个小项目。有趣的提交是这个: https ://github.com/deigote/GrailsScaffoldingMethodCallProblem/commit/0fce966bad6e8004a7133511149c09de54be24bf
运行应用程序时,如果您转到 testDemoMethod (.../GrailsScaffoldingMethodCallProblem/demo/testDemoMethod) 您会呈现“嗨,我是一个方法”,并打印以下内容:
[public java.lang.Object grailsscaffoldingmethodcallproblem.DemoController.this$2$demoMethod()]
但是,如果您转到索引(.../GrailsScaffoldingMethodCallProblem/demo/testDemoMethod),则会打印一个空列表,并且我会收到一个异常:
Message: No signature of method: grailsscaffoldingmethodcallproblem.DemoController.demoMethod() is applicable for argument types: () values: []
Line | Method
->> 11 | index in grailsscaffoldingmethodcallproblem.DemoController
任何线索为什么会发生这种情况或如何解决它?
编辑:伊恩罗伯特的回答解决了这个问题:如果从脚手架模板调用,则找不到控制器方法