Выполнение общего ‹sql: query› в Grails

Это общий способ выбора данных из таблицы и отображения результатов в таблице HTML с помощью библиотек тегов JSP. Каков общий способ сделать это в Grails? То есть возьмите несколько строк SQL и сгенерируйте HTML-таблицу с нуля в Grails, включая имена столбцов в качестве заголовков.

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

person Community    schedule 05.11.2008    source источник
comment
Почему? Если foo является доменным классом, представление списка шаблонов по умолчанию предоставит то, что вы хотите (для 5 столбцов), с разбивкой на страницы и сортировкой по столбцам.   -  person Ed.T    schedule 06.11.2008
comment
Я, очевидно, привел тривиальный пример SQL. Реальный пример будет содержать 2 или 3 таблицы и предложение ‹b› where ‹/b›.   -  person    schedule 06.11.2008
comment
Если вы исправили это / ответили самостоятельно, вы можете просто опубликовать свой ответ здесь и принять его :)   -  person BalusC    schedule 11.03.2010
comment
Я делал это в прошлом. Было бы лучше получить отличный ответ и дать кому-то 25 баллов.   -  person    schedule 12.03.2010


Ответы (2)


Этот вопрос можно перефразировать так: как мне писать код, как наивный разработчик ASP.NET? (Не все разработчики ASP.NET наивны, некоторые могут быть неплохими)

  1. На странице gsp вам доступен любой статический метод. Вы можете использовать любой MyDomain.findBy, list (), считайте, что хотите, из области страницы.
  2. Вы также можете использовать запрос критериев MyDomain.createCriteria (). Затем вы можете передать результат в taglib.

    Но все это, похоже, нарушает принципы MVC. Ваш взгляд должен быть просто видом ....

То, что вы спросили, действительно не идоматично для приложения Grails. Я понимаю, что это обычное дело в мире Microsoft: выполнить запрос, передать его в сетку данных ... Но в Grails нет прямого аналога, и, вероятно, не зря

person Daniel Honig    schedule 05.11.2008

Вы можете использовать taglib, как описано. Вам просто нужно, чтобы Grails знал об этом.

person Ken Gentle    schedule 05.11.2008