在我的 Grails 应用程序中,我在 Controller 上制作了一个过滤器,除了这部分之外一切正常:
flash.message = message(code: 'empSeeker.profileExists')
错误是:
Message:No signature of method: com.MyApp.filters.HRCheckFilters.message() is applicable for argument types: (java.util.LinkedHashMap) values: [[code:empSeeker.profileExists]] Possible solutions: isCase(java.lang.Object)
但如果我用
flash.message="Any message"
更改它有用,它不工作的任何原因?
最佳答案
我认为大多数像这样在 Controller 中工作的东西也可以在过滤器中工作,但显然不是。在这种情况下,有一种解决方法实际上是一种更好的方法。message
在 Controller 中工作,因为 Controller 支持直接调用标记库,并且如果命名空间是 g
那么你可以省略它,所以调用 message
或 g.message
在 Controller 中都调用 <g:message>
标签库。但是 taglib 所做的只是渲染来自 messageSource
的消息。 Spring bean,因此您可以跳过一两层间接并直接调用它。
将此导入添加到您的过滤器类
import org.springframework.context.i18n.LocaleContextHolder
和这个依赖注入(inject)
def messageSource
然后你可以用
flash.message = messageSource.getMessage('empSeeker.profileExists',
null, LocaleContextHolder.locale)
关于grails - grails 过滤器中的 flash.message,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35120923/