我正在尝试从GSP页面调用控制器中定义的方法。我之前在之前版本的Grails之前做过同样的事情。
在我的gsp中:
<%@ page import="com.me.MyController" %>
<%
def cont = grailsApplication.classLoader.loadClass("com.me.MyController").newInstance()
%>
${cont.getInfo('string')}
在我的控制器中:
def getInfo(String id){
return "stuff"
}
我目前收到的错误是控制器没有一个名为getInfo()
的方法接受一个字符串类型,然后建议其他方法不在我试图调用的方法附近。所以Grails 3
中的某些内容发生了变化,或者我做错了什么?
答案 0 :(得分:3)
你不应该这样叫一个控制器。那不是如何使用控制器。如果您需要执行类似的操作,请创建一个使用服务来获取/返回GSP数据的标记库。
package some.package.example
class LookupTagLib {
def myService
static namespace = "custom"
// use returnObjectForTags for Grails 3.x and above.
static returnObjForTags = ["doLookupThing"]
def doLookupThing = { attrs ->
return myService.doLookup(attrs.someParam)
}
}
然后在你的GSP中:
${custom.doLookupThing([someParam: 'string'])}