У меня есть два домена, объявленные в моем приложении.Grails - Поиск многих-ко-многим
class Posts {
String title
String content
static hasMany = [tags:Tag]
static constraints = {
}
}
class Tag {
String Name
static belongsTo = Post
static hasMany = [posts:Post]
static constraints = {
}
String toString()
{
"Tag:${Name}"
}
}
У меня есть контроллер, который управляет поиском и отображением результатов:
package com.trafigura.com.trafigura
class ViewerController {
def defaultAction='search'
def search={}
def show = {
def _foundPost = Post.findAllBytitle(params.title)
return [posts: _foundPost, term: params.title]
}
}
Код search.gsp выглядит следующим образом:
<html>
<head><title>Simple GSP page</title></head>
<body>Place your content here.
<formset>
<legend>TagsPosts</legend>
<g:form action="show">
<label for="title">Title</label>
<g:textField name="title" />
<g:submitButton name="search" value="Search"/>
</g:form>
</formset>
</body>
</html>
и следующий код для шоу. GSP.
<html>
<head><title>Simple GSP page</title></head>
<body><h1>Results</h1>
for items matching <em>${term}</em>.
Found <strong>${posts.size()}</strong> hits.
</p>
<ul>
<g:each var="tag" in="${posts.tags}">
<li>${tag.Name}</li>
</g:each>
</ul>
<g:link action='search'>Search Again</g:link></body>
</html>
Мой Вопрос Я не могу отобразить метки следующим образом:
Результаты
Найдено 1 хитами.
* [planting, dig]
Однако я хочу вывод как:
* planting
* dig
Что я делаю неправильно здесь?
Многозначительный.
Я заметил код 'Post.findAllBytitle' использует нижний регистр 'название' в нем - это то, что вызывает какие-либо ошибки для вас? Я ожидал, что это будет «Post.findAllByTitle» с капиталом «T». –
спасибо Роба, я действительно сделал там опечатку, однако я нашел решение проблемы.
def postfound = Post.findByTitle(params.title)
проблема с findAllByTitle заключается в том, что он возвращает список возможных значений, которые Филпл в своем ответе ниже правильно указал. благодарю, Приветствия WB – WaZ