gpt4 book ai didi

grails - 在grails map 中排序未在gsp中显示

转载 作者:行者123 更新时间:2023-12-02 15:33:56 25 4
gpt4 key购买 nike

在将 map 传递给gsp之前,尝试根据 Controller 中的一个字段对 map 进行排序,它在 Controller 中看起来工作正常,但是gsp页面似乎以没有特定顺序的方式随机抓取了项目。

Controller 代码。尝试订购将显示的提示。

 def show(Long id) {
def reportInstance = Report.get(id)
reportInstance.prompts = reportInstance.prompts.sort{it.displaySequence}
[reportInstance: reportInstance]
}

如果我将其放在println语句中,它将显示它在控制台中排序。

它正在使用的域对象:
class Report {

Long id
String name
String department
String description
String summary
Date activityDate

static hasMany = [prompts:Prompt]

static mapping = {
sort "id"
version false
table 'reports'
columns{
id column: 'id'
name column: 'name'
department column: 'department'
description column: 'description'
summary column: 'summary'
activityDate column: 'activity_date'
}
id generator:'sequence', params:[sequence:'reports_id_sequence']
}

static constraints = {
name(nullable: false, maxSize: 60)
department(nullable: false, maxSize: 60)
description(nullable: true, maxSize: 120)
summary(nullable: true, maxSize: 500)
activityDate(nullable: false)

}

String toString() {
"${name}"
}

这是有问题的gsp页面中的代码段。
<g:if test="${reportInstance?.prompts}">
<li class="fieldcontain">
<h3 class="property-label">Prompts</h3>
<br>
<table id="prompts">
<thead>
<tr>
<th>${message(code: 'prompt.name.label', default: 'Name')}</th>
<th>${message(code: 'prompt.description.label', default: 'Description')}</th>
<th>${message(code: 'prompt.required.label', default: 'Required')}</th>
<th>${message(code: 'prompt.displaySeqno.label', default: 'Display Order')}</th>
</tr>
</thead>
<tbody>
<g:each in="${reportInstance.prompts}" status="i" var="prompt">
<tr class="${(i % 2) == 0 ? 'even' : 'odd'}" onclick='window.location = "${createLink(controller: "prompt", action: "edit", id: prompt.id)}"'>
<td>${fieldValue(bean: prompt, field: "name")}</td>
<td>${fieldValue(bean: prompt, field: "description")}</td>
<td>${prompt.required}</td>
<td class="displaySeqno">${prompt.displaySeqno}</td>
</tr>
</g:each>
</tbody>
</table>
</li>
</g:if>

最佳答案

Report域类中,promptsSet,而不是List,因此无法像这样进行排序。您需要在模型中分别传递排序后的列表:

def show(Long id) {
def reportInstance = Report.get(id)
[reportInstance: reportInstance,
prompts:reportInstance.prompts.sort{it.displaySequence}]
}

并在GSP中使用
<g:each in="${prompts}" status="i" var="prompt">

或者只是传递 reportInstance并在GSP中进行排序
<g:each in="${reportInstance.prompts.sort{it.displaySequence}}"
status="i" var="prompt">

关于grails - 在grails map 中排序未在gsp中显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14884278/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com