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, если вы хотите, чтобы это было поле, по которому сортируются публикации.

Другие вопросы по тегам