我在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)

09-06 11:00