我想将服务代码中每行的sql结果显示给我的gsp视图。
我的服务代码是:
def health()
{
def schemaList = [:]
groovy.sql.Sql sql = new groovy.sql.Sql(dataSource);
sql.eachRow("SELECT SOURCE, count(1) as COUNT from fact group by SOURCE");
ArrayList returnResults = []
sqlStatement.eachRow(sqlString)
{
returnResults<<it.toRowResults()
}
sqlStatement.close()
return[returnMap:returnResults]
}
我的控制器代码是:
def stats = {
def health = AccessLogService.heath()
render (template:'healthview', model:[health:health])
}
我的gsp视图如下:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="layout" content="admin" />
<title>Health</title>
</head>
<body>
<SCRIPT language="JavaScript">
</SCRIPT>
<br />
<br />
<font style='font-size:14px;font-weight:bold;'>Health Condition</font>
<div id='overall'>
<g:if test="${health.size() > 0}">
<table border="1">
<thead>
<tr>
<th>Source</th>
<th>Count</th>
</tr>
</thead>
<tbody>
<g:each in="${health}" status="i" var="thisRecord">
<tr>
<td>${thisRecord.SOURCE}</td>
<td>${thisRecord.COUNT}</td>
</tr>
</g:each>
</tbody>
</table>
</g:if>
</div>
</body>
</html>
我无法在gsp视图中看到我的查询结果?哪里出错了。
答案 0 :(得分:1)
你正试图弄错你的模型。
您的服务返回哈希[returnMap:returnResults]
,以便您的控制器呈现模型:[health:health]
- &gt; [health:[returnMap:returnResults]]
。
因此,在您的gsp中,您应该参考health.returnMap
查看列表:
<g:if test="${health.returnMap}">
...
<g:each in="${health.returnMap}" status="i" var="thisRecord">
<tr>
<td>${thisRecord.SOURCE}</td>
<td>${thisRecord.COUNT}</td>
</tr>
</g:each>
...
</g:if>
更新:
代码看起来很奇怪......应该是这样的:
ArrayList returnResults = []
sql.eachRow("SELECT SOURCE, count(1) as COUNT from fact group by SOURCE"){
returnResults << it.toRowResults()
}
答案 1 :(得分:0)
您服务中声明的sqlStatement
变量在哪里?我认为那是错误
以及调试程序所需的建议。例如,测试服务是否返回结果:
运行您的应用调试模式
使用log.debug
使用println
或者如果您正在执行这些操作,并且在此处的控制台上发现了任何错误。