我有以下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所以我认为使用渲染不是一个好主意。任何帮助都会被贬值,如果可能的话,还有一些代码灯(特别是过滤部分)。
答案 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
来装饰条目。