【问题标题】:Displaying ResultSet in JSP/GSP在 JSP/GSP 中显示 ResultSet
【发布时间】:2011-06-19 00:04:10
【问题描述】:

有谁知道在哪里可以找到有关在 JSP/GSP 页面中显示 ResultSet 结果的文档?

结果在一个 GroovyRowResult 对象中,被返回给 GSP。

这是我现在的显示方式。

<g:if test="${results.size() > 0}">
<table>
    <g:each in="${results}" var="GroovyRowResult" status="index">
        <g:set var="result" value="${GroovyRowResult}" />
        <g:if test="${index == 0}">
            <tr>
                <g:each in="${result.keySet()}" var="key" status="key_index">
                    <g:if test="${key_index == 0}">
                        <th id="t${key_index}" class="staticTHcol">${key.trim()}</th>
                    </g:if>
                    <g:else>
                        <th id="t${key_index}">${key.trim()}</th>
                    </g:else>
                </g:each>
            </tr>
        </g:if>
        <tr>
        <g:each in="${result.values()}" var="value" status="index2">
            <g:if test="${index2 == 0}">
                <td headers="t${index2}" class="staticTDcol">${value}</td>
                <g:set var="record_id" value="${value}" />
            </g:if>
            <g:else>
                <td headers="t${index2}" class="nonStaticTDcol">
                    <g:textField name="${record_id}" value="${value}" onfocus="setDefaultValue('${value}');" onblur="updateValue(this,'${record_id}')" />
                </td>
            </g:else>
        </g:each>
        </tr>
    </g:each>
</table>

没有结果

我没有使用任何 ORM 技术,只使用了纯 JDBC。我已经掌握了基础知识(限制返回的行、分页和结果的基本布局)。现在我需要了解更高级的功能,比如排序等等。

我正在使用最新版本的 Grails,想知道是否有一个插件可以让我获得一些此功能。或者也许有人知道一个很好的 JS 扩展或库可以为此工作。

【问题讨论】:

  • 不知道 Grails/GSP,但是对于 JSP/Servlet,可以在 here(纯 JSP/Servlet)和 here(借助 JS/jQuery)找到大致概念。它可能会带来新的见解。请注意,您希望在 DB 级别而不是 Java 级别进行分页和排序。同样,请参阅here 了解总体思路。

标签: java javascript jsp grails gsp


【解决方案1】:
<table  class="main_grid_table" width="100%">
<thead>
<h3>Number of items found are ${numberofrows}</h3>
<th class="main_grid_column"><b>Factory Id</b></th>
<th class="main_grid_column"><b>Applicant Name</b></th>
<th class="main_grid_column"><b>Designation</b></th>
<th class="main_grid_column"><b>Factory_name</b></th>
<th class="main_grid_column"><b>Situation of Dist</b></th>
<th class="main_grid_column"><b>Police Station</b></th>
</thead>
<% while(resultset.next())
{%>
<tr>
<td align="center" class="main_grid_column"><a href="printAmmendmendFormOne.htm?facid=<%=resultset.getString("Fac_id")%>"><%=resultset.getString("Fac_id")%></a></td>
<td align="center" class="main_grid_column"><%=resultset.getString("Appname")%></td>
<td align="center" class="main_grid_column"><%=resultset.getString("Designation")%></td>
<td align="center" class="main_grid_column"><%=resultset.getString("Factory_name")%></td>
<td align="center" class="main_grid_column"><%=resultset.getString("Situation_f_district")%></td>
<td align="center" class="main_grid_column"><%=resultset.getString("nearest_police_station")%></td>
</tr>
<%}%>
<tbody>
</tbody>
</table>

【讨论】:

    【解决方案2】:

    问题是关于在 JSP 上对数据进行排序的某种方式,建议使用某种 JS。


    所以...这里是:http://code.google.com/apis/ajax/playground/#motion_chart 和其他谷歌图表和表格 - 这些东西真的很可爱,当然,可以排序。

    要向他们提供数据,您只需将列表 / 数组 / JSON 传递给 JSP,并在作为示例提供的 JS 中使用一些循环。

    【讨论】:

      【解决方案3】:

      完全同意 duffymo 关于您的解决方案的设计。在 Grails 中,您可以将数据访问封装在 Service 类中,然后将您的演示文稿包装在 taglib 中,该 taglib 可以使用 Service 类来检索数据。

      如果您通过 JDBC 直接使用 SQL,则进行排序(在 SQL 中排序)。使用 GSQL 为您的 SQL 添加一点 Grooviness,docs 是使用 Groovy SQL 背景的一个很好的起点。

      【讨论】:

      • 感谢保罗的回复。我已经回复了 duffymo 并澄清了一些问题。我正在使用 Groovy SQL 来检索我的结果。我通过 SQL 进行排序的唯一问题是我必须重复调用数据库。我试图避免这种情况。 O 几乎正在寻找一种解决方案,以便能够控制我在当前 GSP 页面中拥有的数据。目前我正在将数据放入一个表结构中,并且想知道是否有任何解决方案可能通过 JavaScript 或在创建表后可以控制表的排序。
      【解决方案4】:

      我认为 ResultSet 不应该接近 JSP/GSP。它永远不应该出现在您的持久层中。

      ResultSet 是一个数据库游标 - 一种稀缺资源。关闭它的责任应该留在创建它的方法中。

      正确的做法是将 ResultSet 映射到一个对象或集合中,在范围内关闭它,然后将该对象或集合传递给 JSP/GSP 以按您认为合适的方式进行排序/分页/显示。

      【讨论】:

      • 对不起,我应该更清楚。结果被发送到 GroovyRowResult 对象列表中的视图。这些几乎是具有 KVP 关联的地图集合。我想这个问题应该是关于在 JSP/GSP 页面上以任何转换形式(即 List、Collection、Set ...)显示 ResultSet 对象的结果的问题。一旦我拥有它,我正在更多地研究对视图上的数据的控制。但我完全同意您将持久层与视图分离的观点。很抱歉让你远离我真正的问题。
      猜你喜欢
      • 2015-03-08
      • 1970-01-01
      • 1970-01-01
      • 2012-12-09
      • 1970-01-01
      • 2017-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多