我们怎样才能让GroovyRowResult只列出值,而不是列标题?或者只获取.gsp视图中的值?

时间:2013-08-28 15:53:32

标签: grails groovy

我们正在尝试清理一个groovy sql.rows结果,只包含从查询返回的值。

查询服务非常简单

def getRowsFromDB(String sqlStatement) {
    def sql = Sql.newInstance(-redacted-)
    def rows = sql.rows (sqlStatement)
    return rows
}

列表如下:

[SCBCRSE_SUBJ_CODE:SOCI, SCBCRSE_CRSE_NUMB:291, SCBCRSE_TITLE:Special Topics]
[SCBCRSE_SUBJ_CODE:SOCI, SCBCRSE_CRSE_NUMB:306, SCBCRSE_TITLE:Sociology of Work]
[SCBCRSE_SUBJ_CODE:SOCI, SCBCRSE_CRSE_NUMB:308, SCBCRSE_TITLE:Soc of Education]
[SCBCRSE_SUBJ_CODE:SOCI, SCBCRSE_CRSE_NUMB:312, SCBCRSE_TITLE:Criminal Adjudication]
[SCBCRSE_SUBJ_CODE:SOCI, SCBCRSE_CRSE_NUMB:314, SCBCRSE_TITLE:Extraordinary Group Behavior]

但是我们希望得到它:

SOCI 291 Special Topics
SOCI 306 Sociology of Work
SOCI 308 Soc of Education
SOCI 312 Criminal Adjucation
SOCI 314 Extraordinary Group Behavior

这是否可以轻松完成?我尝试将.value添加到.gsp标记中,但它会抛出一条错误,指出找不到任何方法。

最后当我在我的视图中使用它时,列表中的每个项目总会有一组{ },你如何摆脱这些?

2 个答案:

答案 0 :(得分:8)

如果您不希望结果为String,而是在列表中迭代并在视图中控制,则使用:

rows.collect{it.values()}

应该给你

[[SOCI, 291, Special Topics], 
 [SOCI, 306, Sociology of Work], 
 [SOCI, 308, Soc of Education], 
 [SOCI, 312, Criminal Adjudication], 
 [SOCI, 314, Extraordinary Group Behavior]]

答案 1 :(得分:6)

您可以将GroovyRowResults列表转换为字符串列表,然后再将它们返回给Gsp:

return rows.collect {
    "${it.SCBCRSE_SUBJ_CODE} ${it.SCBCRSE_CRSE_NUMB} ${it.SCBCRSE_TITLE}"
}