Итерация dataList в jsp с использованием скриптлетов

Я хотел бы спросить, как я могу выполнить итерацию dataList в jsp, используя скриптлеты, учитывая приведенный ниже код. Я знаю, что рекомендуется использовать jstl, однако мне необходимо использовать скрипты в своей деятельности. Пожалуйста, помогите, спасибо!

<%@taglib uri="/WEB-INF/dlTagLib.tld" prefix="dl"%>
<%@page language="java"%>
<%@page import="java.util.*"%>

<html>
<head>
    <title>Book Lists</title>   
</head>
<%    
    DataList bookDataList = (DataList) request.getAttribute("bookData");
%>
<body>
    <table border="1">
        <tr>
            <td>Title</td>
            <td>Author</td>
        </tr>
        <dl:iterate dataList = "${bookDataList}">
            <tr>
                <td><dl:get dataList = "${bookDataList}" column="book_title"/></td>
                <td><dl:get dataList = "${bookDataList}" column="book_author"/></td>
            </tr>
        </dl:iterate>
    </table>
</body>


person Raven    schedule 03.06.2015    source источник
comment
Этот код не будет работать, потому что bookDataList — это переменная Java, а ${bookDataList} будет искать атрибут с именем "bookDataList" в pageContext, request, session и servletContext. Поскольку он не может найти этот атрибут (по крайней мере, из того, что вы показываете в своем коде), ничего не будет отображаться. И вы не используете здесь JSTL, только язык выражений. Тем не менее, я не поддерживаю вопросы и ответы скриптлетов.   -  person Luiggi Mendoza    schedule 04.06.2015
comment
@Luiggi Mendoza Я знаю, что приведенный выше код не будет работать, потому что я не знаю, как это сделать, поэтому я ищу подходящий ответ, сэр. Как я уже сказал, я знаю, что рекомендуется использовать jstl, но ТРЕБУЕТСЯ использовать скриптлеты в отношении данной деятельности.   -  person Raven    schedule 04.06.2015
comment
Я знаю, что приведенный выше код не будет работать, потому что я не знаю, как это сделать Я уже объяснил, почему он никоим образом не будет работать. И не так уж сложно портировать его на скриптлеты...   -  person Luiggi Mendoza    schedule 04.06.2015


Ответы (1)


Вот как код может использовать скриптлеты с некоторыми предположениями:

  • DataList расширяет или реализует List или Collection или по крайней мере Iterable.
  • Вы используете Java 5 или выше.
  • Объекты в bookDataList имеют тип Data или что-то в этом роде.
  • Этот класс Data имеет правильные геттеры для данных, которые вам нужны/нужны.
<body>
    <table border="1">
        <th>
            <td>Title</td>
            <td>Author</td>
        </th>
        <%
            DataList bookDataList = (DataList) request.getAttribute("bookData");
            for (Data book : bookDataList) {
        %>
        <tr>
            <td><%= book.getBook_Title() %></td>
            <td><%= book.getBook_Author() %></td>
        </tr>
        <%
            }
        %>
    </table>
</body>

Если какое-либо из приведенных выше предположений неверно, укажите это в своем вопросе, чтобы исправить код в этом сообщении.

person Luiggi Mendoza    schedule 03.06.2015