Grails 2.1.1 - таблица из дочернего списка не сортируется в представлении родительского шоу -arrghh
Наличие проблем или отсутствие понимания того, как подходить к следующей ситуации;
У меня 2 домена
Portfolio
static hasMany [publications: Publication]
String portfolioName
Publication
static belongsTo = [portfolio: Portfolio]
String publicationName
String pubcontent
String published
String publisheddate
Я хочу g:render
или же tmpl
представление списка публикаций или новое частичное представление представления представления для домена портфолио. Все это прекрасно работает и прекрасно отображается, если я настрою представление списка публикаций так, чтобы оно передавало параметры портфолио в portfolioInstance?.Publications. Потрясающе просто.
Проблема: Когда я хочу отсортировать заголовки таблицы из представления списка публикаций, сортировка перемещает данные, но не следует ни в каком порядке сортировки. Я перепробовал все доменные уловки, такие как публикации списков, компараторы и т. Д., Которые я использовал для изменения представления, используя .sort{a,b-> a.id.compareTo(b.id)}
НО еще нада.
Как заставить эти столбцы правильно сортировать? Я должен повторить - мне нужно или нужно, чтобы все столбцы в таблице были сортируемыми.
То, что я сделал до сих пор и не сработало: да <g:sortableColumn
Это видение, используется класс портфолио. Список публикаций, встроенные в представление компараторы, и многое другое.
Куда я иду не так? Нужно ли писать новый метод под контроллером портфолио для обработки действия списка и сортировки параметров, или я могу что-то сделать в представлениях, чтобы это исправить.
пример списка - урезать для краткости
<g:each in="${portfolioInstance?.publications }" status="i" var="pubs">
<g:link controller="publication" action="show" id="${publicationInstance.id}">${fieldValue(bean: publicationInstance, field: "publicationName")}</g:link>
<td><g:formatDate date="${pubs.publisheddate}" /></td>
<td>${fieldValue(bean: publicationInstance, field: "published")}</td>
Контроллеры
Стандартный Grails генерируется контроллером
def show(Long id) {
def portfolioInstance = Portfolio.get(id)
portfolioInstance.properties=params
def list(Integer max) {
params.max = Math.min(max ?: 10, 52)
if (params.sort==null){
params.sort = "published"
}
[publicationInstanceList: Publication.list(params), publicationInstanceTotal: Publication.count()]
Полностью потерян и устал от поиска. Все предложения приветствуются.
1 ответ
См. Раздел 6.5.2 ("Порядок сортировки по умолчанию") документации GORM. Вам просто нужно добавить
static mapping = {
sort "publicationName"
}
в вашем классе Publication, если вы хотите, чтобы это было поле, по которому сортируются публикации.