Grails-groovy sql每行都要在gsp视图中显示

时间:2015-01-18 14:08:34

标签: grails gsp

我想将服务代码中每行的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视图中看到我的查询结果?哪里出错了。

2 个答案:

答案 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

或者如果您正在执行这些操作,并且在此处的控制台上发现了任何错误。