2

我们计划使用 Spring 3.1 缓存抽象而不是 Grails Spring 缓存插件。我已经在本地进行了实验,但是在使用 Spring el 表达式时出现了问题,例如

@Cacheable(value = 'dashboardCache', key = 'sessionStorageService.getUser()', condition = 'sessionStorageService.getUser() != null')
public List<BusinessDashboard> getUserDashboards(String serverName, SessionStorageService sessionStorageService) { ... }

执行集成测试用例时出现以下错误

EL1008E:(pos 0): Field or property 'sessionStorageService' cannot be found on object of type 'org.springframework.cache.interceptor.CacheExpressionRootObject'
org.springframework.expression.spel.SpelEvaluationException: EL1008E:(pos 0): Field or    property 'sessionStorageService' cannot be found on object of type 'org.springframework.cache.interceptor.CacheExpressionRootObject'

我认为这种行为是由于缺少调试信息引起的——因此我的问题是:

是否可以在 Grails 应用程序中启用 Spring el 表达式,或者编译过程是否有任何参数告诉 Grails 将调试符号保留在类文件中?

(我们在 Grails 2.0.1 上运行)

4

1 回答 1

4

你应该尝试'#sessionStorageService.getUser()'

于 2012-05-08T13:23:04.447 回答