1

我正在使用 JSTL SQL 标记库从 JSP 中执行小型 SQL 查询。

我通常使用 rowsByIndex 检索 EL 中的查询结果,然后遍历返回的集合:

<c:forEach var="row" items="${myQuery.rowsByIndex}">
    <p>${row[0]}, ${row[1]}, ${row[2]}, ${row[3]}</p>
</c:forEach>>

我想对列名做类似的事情。

我看到结果界面上有一个方法:

public String[] getColumnNames();

我正试图弄清楚如何从 EL 访问它。

我正在尝试做类似的事情:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
...
  <table>
    <tr>
        <c:forEach var="columnName" items="${helloQuery.getColumnNames}">
            <th><c:out value="${columnName}" /></th>
        </c:forEach>
    <tr>
  </table>
...

但是没有欢乐。。

4

1 回答 1

1

在访问属性时, EL依赖于Javabeans 规范及其命名约定。您基本上只需要指定属性名称(即使它是虚拟的),EL 将在需要返回值时将其转换为 getter 调用,或者在需要设置值时将其转换为 setter 调用(#{}仅在 JSF 语法中)。

所以,${helloQuery.getColumnNames}基本上是在尝试调用getGetColumnNames()${helloQuery}. 但是没有,这将导致PropertyNotFoundException. 您需要将其更改为${helloQuery.columnNames}才能调用该getColumnNames()方法。

于 2012-05-11T12:09:33.197 回答