grails - Cereal 以一对多关系排序

标签 grails

我在Grails应用程序中有两个域,具有一对多关系:Course和Person。一门类(class)可能有很多人。当我查看针对类(class)的show.gsp时,它将显示该类(class)注册的所有人的列表。

我希望该列表按姓氏的字母顺序排序。但是,每次刷新show.gsp时,列表的顺序都会更改(似乎无法识别模式)。我在Person域中设置了一个映射,以按lastName“asc”进行排序,但这没有任何效果。

我修改了脚手架的show.gsp,以在表格中显示名称以及其他复选框。这是修改后的代码:

<g:if test="${courseInstance?.persons}">
            <br />
            <table>
                <thead>
                    <tr>
                        <th>#</th>
                        <g:sortableColumn property="person"
                            title="${message(code: 'person.lastName.label', default: 'Person')}" />
                        <g:sortableColumn property="paid"
                            title="${message(code: 'person.paid.label', default: 'Paid')}" />
                        <g:sortableColumn property="attended"
                            title="${message(code: 'person.attended.label', default: 'Attended')}" />
                    </tr>
                </thead>
                <tbody>
                    <g:set var="counter" value="${1}" />
                    <g:each in="${courseInstance.persons}" status="i" var="p">
                        <tr class="${(i % 2) == 0 ? 'even' : 'odd'}">
                            <td>
                                ${counter}
                            </td>
                            <td class="property-value" aria-labelledby="persons-label"><g:link
                                    controller="person" action="show" id="${p.id}">
                                    ${p?.encodeAsHTML()}
                                </g:link></td>
                            <td><g:checkBox name="paid" value="${p.paid}"
                                    onclick="${remoteFunction(action:'togglePaid', id:p.id,
                                params:'\'completed=\' + this.checked')}" /></td>
                            <td><g:checkBox name="attended" value="${p.attended}"
                                    onclick="${remoteFunction(action:'toggleAttended', id:p.id,
                                params:'\'completed=\' + this.checked')}" /></td>
                        </tr>
                        <g:set var="counter" value="${counter + 1}" />
                    </g:each>
                </tbody>
            </table>
        </g:if>

我可以在show.gsp或域中进行任何修改,以使列表默认情况下按字母顺序排序(除非单击可排序的列)?

谢谢!

最佳答案

您能否显示如何在域级别进行设置?它应该像这样...

class Person {
    …
    static mapping = {
        sort "lastName"
    }
}

查看文档here。如果排序似乎正确但仍然无法正常进行,则可以尝试停止该应用程序并执行grails clean并重新运行它。

更新:
答案是下面的评论...

关于grails - Cereal 以一对多关系排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13041721/

相关文章:

database - 如何从 Grails Controller 操作中在当前系统中创建文件并保存从数据库中获取的数据?

grails - GroovyWS WSClient抢先基本身份验证

spring - Grails Spring Core 安全插件 - 无法解析类

java - 如何从数据库初始化spring bean

twitter-bootstrap - 我需要做什么才能在 GRAILS 项目的 Bootstrap 上使用 smartmenus?

grails - 我想从一个gsp获取表单数据,并想在另一个gsp中访问该数据,并希望将该数据插入表中,我该怎么做?

grails - 为什么此源代码在Grails 1.3.7中不起作用?

spring - 构建特定于上下文(消费者客户端)的spring应用程序

grails - 如何知道我的应用程序正在使用多少个数据库连接?

hibernate - 如何在 HQL 中连接两个表以获取一个域类的结果