我想在可序列化的域中使用可搜索的插件。
现在的问题是,如果我添加此代码,它就不会编译:
类Product实现Serializable {
静态瞬变= ['searchable']
static searchable = true
我不知道这个可搜索的插件是如何工作的.. 此外,我还在域Product中拥有hasMany和belongsTo关系。 其他人也是可序列化的域
所以请大家告诉我使这个域可搜索的正确方法
答案 0 :(得分:0)
首先,你不需要那里的瞬态定义。这就是您开始使用的全部内容:
static searchable = true
您可以通过转到“http:// localhost:8080 / YOUR-APP-NAME-HERE / searchable”进行测试。如果您确实添加了任何产品,则可以使用该URL搜索域中的一个简单字段(例如,说出一个String productName字段)。
一旦确定它正常工作,您可以在表单上放置搜索字段,并向产品控制器添加一些自定义方法以使用搜索功能:
//search form
<form controller="product" action="searchForProducts" >
<g:textField name="query" />
<input type="submit" value="search" />
</form>
//ProductController
def searchForProducts = {
if(params.query) {
def products = Product.search(params.query).results
return [productInstanceList: products]
}
}
只要你的hasMany引用也可以搜索,你应该能够在搜索中包含这些引用。我还没有这么做,所以我对细节并不积极。