Grails 3中GSP控制器中的呼叫方法

时间:2016-03-18 21:51:06

标签: grails

我正在尝试从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中的某些内容发生了变化,或者我做错了什么?

1 个答案:

答案 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'])}