Grails搜索机制

时间:2011-05-16 14:22:45

标签: search grails controller

我有以下gsp页面:

 <g:form controller="??" action="??">
    <h1>Search</h1>
    <g:submitButton name="search" value="Search"/>

    <div id="resultsHere">

    </div>

    </g:form>

我想要做的是,每次“点击搜索”,数据库都会搜索该记录,让我们想象一下我在寻找书名。因此,每当我写一个标题时,数据库都会查找书籍并打印与书籍相关的每个数据。我怎么能这样做??

我的想法是在div中有类似的东西:

<ul>
<g:each in="${bookList}">
  <li>Name: ${it.name}, Locale: ${it.isbn}</li>
</g:each>
</ul>

所以关键是,当点击搜索按钮时,处理该操作的控制器应该将页面重定向到同一页面,并传递已过滤的书籍列表,以便可以在<g:each in="${bookList}">标签中打印

在这种情况下,我希望看到这是最好的解决方案。我也可以直接在页面中渲染结果,但我想为外观做一些css所以我认为使用渲染不是一个好主意。任何帮助都会被贬值,如果可能的话,还有一些代码灯(特别是过滤部分)。

1 个答案:

答案 0 :(得分:0)

我会在您的控制器中执行一个操作,然后渲染列表。

即:作为伪代码(而不是完整的)

BookController {
  def search = {SearchComamnd search ->

    def books = []
    if(search) {
      books = Book.createCritera().list {
        and { 
          title(search.title)
          author(search.title)
        }
      }
    }

    render [ books:books ]
  }

  class SearchCommand {
    def author
    def title
  }
}

然后在你的视野中

<g:form controller="??" action="??">
    <h1>Search</h1>
    <g:submitButton name="search" value="Search"/>

</g:form>
<g:each in="${books}">
  <li class="book">Name: ${it.name}, Locale: ${it.isbn}</li>
</g:each>

现在可以使用css li.book来装饰条目。