Grails- groovy sql 要在 gsp 视图中显示的每一行
Grails- groovy sql each row to be displayed in gsp view
我想显示 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 视图中看到我的查询结果?我哪里错了。
在您的服务中声明的 sqlStatement
变量在哪里?我认为这是错误的。
以及调试程序所需的建议。例如,测试服务 returns 的结果是否为:
运行 您的应用调试模式
使用 log.debug
使用 println
或者,如果您正在执行这些操作并且在您的控制台上看到任何错误 post,那就是这里。
您正在尝试获取错误的模型密钥。
你服务 returns 哈希 [returnMap:returnResults]
所以你的控制器呈现模型:[health:health]
-> [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()
}
我想显示 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 视图中看到我的查询结果?我哪里错了。
在您的服务中声明的 sqlStatement
变量在哪里?我认为这是错误的。
以及调试程序所需的建议。例如,测试服务 returns 的结果是否为:
运行 您的应用调试模式
使用 log.debug
使用 println
或者,如果您正在执行这些操作并且在您的控制台上看到任何错误 post,那就是这里。
您正在尝试获取错误的模型密钥。
你服务 returns 哈希 [returnMap:returnResults]
所以你的控制器呈现模型:[health:health]
-> [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()
}