3

すべての検索をワイルドカードで自動的にラップする方法はありますか?

例えば:

 Book.search("*${params.q}*", params)
4

1 に答える 1

2

私は.searchに精通していません(プラグインを使用していますか?)。ただし、モデルでのワイルドカード検索の場合、通常、ドメインモデルクラス内にメソッドを作成します。あなたの例では、

Bookモデルクラスの場合:

class Book {
   String title
   String author
   int year

   static List wildSearch(par, val) {
      def foundList = this.executeQuery("select b FROM Book b WHERE ${par} like \'%${val}%\'")
      return foundList
   }
}

コントローラ内:

def searchBook = {
   def b1 = new Book(title: "Farewell To Arms", author: "Ernest Hemingway").save()
   def b2 = new Book(title: "The Brother's Karamazov", author: "Anton Chekov").save()
   def b3 = new Book(title: "Brothers in Arms", author: "Cherry Dalton").save()

   // If you search for "Arms", This returns b1 and b3 
   def found = Book.wildSearch("title", params.title)
}

URLの例:

http://localhost:8080/mytest/mycontroller/searchBooks?title=Arms    
于 2013-03-13T20:03:33.810 に答える