Sql grails-打印每行';GroovyRowResult中具有列名的s值
我想让用户触发sql查询,然后在grails视图页面中查看结果 我的Sql grails-打印每行';GroovyRowResult中具有列名的s值,sql,grails,groovy,each,Sql,Grails,Groovy,Each,我想让用户触发sql查询,然后在grails视图页面中查看结果 我的QueryController.groovy是 def query(){ def headers = null; //["id","name"] Sql sql = new Sql(dataSource) def rowResults = sql.rows(params.query) //GroovyRowResult rowResults.eachWithIndex { row, index-&
QueryController.groovy
是
def query(){
def headers = null; //["id","name"]
Sql sql = new Sql(dataSource)
def rowResults = sql.rows(params.query) //GroovyRowResult
rowResults.eachWithIndex { row, index->
if (headers == null) {
headers = row.keySet()
}
}
[headers : headers, resultList: rowResults, total : rowResults.size() ]
}
在grails视图页面(query.gsp
)中
${val}
视图中的${val}
部分未按预期工作,因为它给出的结果是id=1
,而不是1
。我只想在那里显示值
可能是一个较小的问题,但需要解决它
谢谢。通过访问每个地图上的值来尝试访问值:
<table class="table table-striped" border="1">
<thead>
<tr>
<g:each in="${headers}" var="header">
<g:sortableColumn property="header" title="${header}" />
</g:each>
</tr>
</thead>
<tbody>
<g:each in="${resultList}" var="row">
<tr>
<g:each status="counter" in="${row}" var="val">
<td>${val.value}</td>
</g:each>
</tr>
</g:each>
</tbody>
</table>
仅供参考,您为用户提供的功能非常强大,他们可以对您的数据库运行任何类型的查询,甚至删除您的表
我得到了以下代码,因为val是KVP
<tr>
<g:each status="counter" in="${row}" var="val">
<td>${val.value}</td>
</g:each>
</tr>
${val.value}
感谢您提出的从GroovyRowResult
获取列名的经济高效的建议。实际上,我正在尝试开发一个报告模块,用户可以自己查询数据库。当然,drop命令将被阻止。或者,我可以构建自己的特定于应用程序的查询语言。进一步的建议将不胜感激。我不会允许用户直接对数据库编写查询。我会找到他们经常使用的用例,并可能创建灵活的预定义查询,以便他们可以执行。
def query(){
def headers = null; //["id","name"]
Sql sql = new Sql(dataSource)
def rowResults = sql.rows("select * from Message;") //GroovyRowResult
// rowResults is a list, you can access it by its index
headers = rowResults[0].keySet()
<tr>
<g:each status="counter" in="${row}" var="val">
<td>${val.value}</td>
</g:each>
</tr>