从多个列表中填充Grails GSP表

时间:2015-02-17 23:12:25

标签: oracle grails groovy gsp

我有两个名为schemaList的列表,另一个是从不同的SQL查询生成的recordCount。如何使用GSP中的两个列表填充一个表?我可以使用g来填充一个列表:每个但不是两个。 编辑: 摘自StatsService.groovy:

//some sql connection code
sconn.eachRow ("select username as SCHEMA_NAMES from dba_users) {row ->
schemaList << row.SCHEMA_NAMES
}

//use schemaList.each() to iterate through schemas and create oracle proxy connections for each schema to get a count of the message_xml table
pconn.eachRow("select count(*) as rCount from message_xml") { row ->
recordCount << row.rCount
}

return [recordCount:recordCount]
return [schemaList:schemaList]

我正在尝试将它输出到这样的东西 GetStats.gsp:

<thead>
<tr>
<th>Schema</th>
<th>Count</>
</tr>
</thead>
<tbody>
<g:each in="${schemaList} var="sl">
<tr>
<td>${sl}</td>
<g:each in="${recordCount}" var="rc">
<td>${rc}</td>
</tr>
</g:each>
</g:each>
</tbody>

但是当我这样做时,我的表格显示为空白。

我现在只做了大约2个月的Grails,但我真的很喜欢它。在此先感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

有两个return语句没有任何意义。这不会在Java类中编译,只能在Groovy类中编译,因为其他原因允许这样做。但无论是Java,Groovy还是任何其他JVM语言,您只能从方法中返回一个值。

当然,该方法可以包含多个值,因此您可以使用两个列表作为字段创建一个小数据对象类并返回该值。但在这种情况下,由于您要创建要从控制器传递给GSP的数据,因此您可以使用标准的Grails约定。如果您从控制器操作方法返回某些内容,则预计它将是Map。你可以直接渲染,重定向,转发等,但这些都是&#34; void&#34;回报。

你的控制器应该返回一个地图作为模型,它可以有多个值,所以将两个地图合并为一个:

return [recordCount:recordCount, schemaList:schemaList]

然后将其包含在控制器的模型图中(或将其用作整个模型图)。

答案 1 :(得分:0)

如果我理解正确,您希望显示列表schemaList并列出recordCount。 也许你可以在控制器上做逻辑加入两个列表我提供了什么

def auxlist= schemaList + recordCount