我在grails项目中使用了joda时间库。
我已经安装了可搜索的插件。
我有几个域,但现在最重要的是:
import org.joda.time.DateTime
class Entry {
static searchable = {
except = ['id', 'version']
spellCheck "include"
tags component: true
title boost: 2.0
dateCreated boost: 2.0
}
String title
String content
DateTime dateCreated
DateTime lastUpdated
}
但是在初始化时,我遇到以下错误:
我的问题:
是否可以在grails中使dateCreated和/或lastUpdated属性可搜索?
如果可能的话,该怎么办?
谢谢。
编辑
如果要在config.groovy中定义自定义转换器,如下所示:
那么FunkyConverter类中定义了什么?
最佳答案
0.6版本的Searchable(可能是任何较早的版本)附带的指南针版本在org.joda.time.DateTime类中具有一些特殊情况的代码(在org.compass.core.converter.DefaultConverterLookup类中)。我无法直接说出它是否有效,但看起来它会尝试自动利用Compass中包含的org.compass.core.converter.extended.DataTimeConverter作为joda DateTime类。
但是,对于joda LocalDate和LocalTime类,没有内置的支持。对Searchable版本0.6.1(http://jira.grails.org/browse/GPSEARCHABLE-28)的最新错误修复以及在Searchable.groovy中使用registerClass配置(如下所示)已解决了我的“它似乎没有合适的'searchable属性'...”问题在应用程序启动时,在Bootstrap.groovy中实例化域对象。
compassSettings = [
"compass.converter.jodatime.type": "net.streamrecorder.web.converter.LocalTimeConverter",
"compass.converter.jodatime.registerClass": "org.joda.time.LocalTime"
]
请注意,net.streamrecorder.web.converter.LocalTimeConverter是我自己创建的。我在org.compass.core.converter.extended.DataTimeConverter之后对其建模。从GPSEARCHABLE-28票证引用的此差异中,还有一个LocalDate转换器:(http://jira.grails.org/secure/attachment/15729/0001-Nasty-fixes-and-workarounds-for-adding-custom-compas.patch)当然,您仍然需要为域类中的域成员变量指定转换器,如下所示:(http://grails.org/Searchable+Plugin+-+Converters)