JSP数据库结果未正确显示

时间:2009-07-27 16:15:39

标签: mysql html database jsp jstl

我有一个JSP MySQL查询

<sql:query var="libraries" dataSource="jdbc/ArabiTagOnline"><br>
     SELECT l.LibraryId, v1.LAvalue AS "dbESTid", v2.LAValue AS "LibName", v3.LAValue AS "Desc" 
     FROM ((Library l LEFT JOIN LibAttrValue v1 ON l.LibraryId = v1.LibraryId AND v1.AttributeId = 1) 
     LEFT JOIN LibAttrValue v2 ON l.LibraryId = v2.LibraryId AND (v2.AttributeId = 2 OR v2.AttributeId IS NULL))
     LEFT JOIN LibAttrValue v3 ON l.LibraryId = v3.LibraryId AND (v3.AttributeId = 6 OR v3.AttributeId IS NULL)
<\sql:query

这将返回四列。 我尝试使用AS重命名结果中的列,但是在迭代结果时

<c:forEach var="libraryResults" items="${libraries.rows}">
    <tr>
        <td>${libraryResults.Libraryid}</td>
        <td>${libraryResults.dbESTid}</td>
        <td>${libraryResults.LibName}</td>
        <td>${libraryResults.Desc}</td>
    </tr>
</c:forEach>

加载页面时,dbESTidLibNameDesc列为空白。

我问${libraries.columnNames}并发现我的查询中的AS语句没有重命名列,它们仍然是LAValue。 ${libraryResults.LAValue}只返回Desc。关于我如何填充这张表的任何帮助?

1 个答案:

答案 0 :(得分:2)

您的SQL中的列别名周围不需要双引号 - 这可能会使jdbc驱动程序混乱。另外,为什么在<sql-query>

中的break标记

列别名应该有效。但是,如果问题仍然存在,则可能的解决方法是迭代每行中的列:

<c:forEach var="libraryResults" items="${libraries.rows}">
  <tr>
    <c:forEach var="column" items="${libraryResults}">
      <td><c:out value="${column.value}"/></td>
    </c:forEach>
  </tr>
</c:forEach>

那就是说,真正的解决方案当然是使用MVC框架,因此您不必在JSP中嵌入查询。