Результат базы данных JSP не отображается должным образом

0

У меня есть запрос 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>

При загрузке страницы столбцы dbESTid, LibName и Desc пусты.

Я спросил ${libraries.columnNames} и выяснил, что оператор AS в моем запросе не переименовал столбцы, они все еще LAValue. ${libraryResults.LAValue} возвращает только Desc. Любая помощь в том, как я могу заполнить эту таблицу?

Теги:
database
jsp
jstl

1 ответ

2

Вам не нужны двойные кавычки вокруг псевдонимов столбцов в вашем SQL - это может ввести в заблуждение драйвер jdbc. Кроме того, почему тег break в <sql-query>?

Сглаживание столбцов должно работать. Однако, если проблема не устранена, одним из возможных способов решения этой проблемы является итерация по столбцам в каждой строке:

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню