Session 将会话值从控制器传递到src/groovy类

Session 将会话值从控制器传递到src/groovy类,session,grails,groovy,controller,Session,Grails,Groovy,Controller,我在会话中的控制器类中设置了一个变量,如下所示: session.webURL = webURL println "#####" + session.webURL` 现在,我想在src/groovy类中使用webURL的这个值。因此,我在src/groovy BasicCrawler类中写道: println session.webURL 它在org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(Script

我在会话中的控制器类中设置了一个变量,如下所示:

    session.webURL = webURL
    println "#####" + session.webURL`
现在,我想在src/groovy类中使用webURL的这个值。因此,我在src/groovy BasicCrawler类中写道:

    println session.webURL
它在org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:50)上显示了一条错误消息:“没有这样的属性:类的会话:cmsprofiler.BasicCrawler”


请告诉我我做错了什么。非常感谢

您不能在任何任意类中访问会话。如果愿意,可以将该值作为参数传递给BasicCrawler中的方法

// grails-app/controllers/demo/DemoController.groovy 
package demo
class DemoController {
    def someAction() {
        def crawler = new BasicCrawler()
        crawler.someMethod(session.webURL)
    }
}

// src/groovy/demo/BasicCrawler.groovy
package demo
class BasicCrawler {
    def someMethod(String url) {
        // ...
    }
}

我正在使用crawler4j,我需要在visit函数中使用webURL的值。我无法更改方法定义,因为它需要重写crawler4j的方法,并且我也无法在函数中定义函数。还有其他方法吗?你能推荐其他方法吗?将其作为值传递给构造函数,然后调用该方法