在Grails </sql:query>中执行泛型<sql:query>

时间:2008-11-05 15:07:43

标签: jsp grails

这是从表中选择数据并使用JSP标记库在HTML表中显示结果的通用方法。在Grails中执行此操作的一般方法是什么?也就是说,在Grails中使用几行SQL并从头开始生成HTML表,包括列名作为标题。

<sql:query var="results" dataSource="${dsource}">
    select * from foo
</sql:query>
(# of rows: ${results.rowCount})
<table border="1">
    <!-- column headers -->
    <tr bgcolor=cyan>
        <c:forEach var="columnName" items="${results.columnNames}">
            <th><c:out value="${columnName}"/></th>
        </c:forEach>
    </tr>
    <!-- column data -->
    <c:forEach var="row" items="${results.rowsByIndex}">
        <tr>
            <c:forEach var="column" items="${row}">
                <td><c:out value="${column}"/></td>
            </c:forEach>
        </tr>
    </c:forEach>
</table>

2 个答案:

答案 0 :(得分:2)

这个问题可以改写为,我如何像一个天真的ASP.NET开发人员一样编写代码? (并非所有ASP.NET开发人员都天真,有些人可能非常好)

  1. 您可以在gsp页面中使用任何静态方法。您可以使用任何MyDomain.findBy,list(),从页面范围开始计算。
  2. 您还可以使用条件查询MyDomain.createCriteria() 然后,您可以将结果传递给taglib。

    但所有这些似乎都违反了MVC原则。您的观点应该只是一个观点....

  3. 你问的问题真的不是grails应用程序的惯用语。我意识到它在微软世界中是常见的,执行一个查询,将它传递给数据网格......但是Grails没有直接的分析,可能是有充分理由的

答案 1 :(得分:0)

您可以按照描述使用taglib。你只需要让Grails知道它。