Как отобразить элементы ArrayList из Java в JSP? - PullRequest
0 голосов
/ 13 апреля 2019

Я сгенерировал Arraylist, где я получаю элементы из базы данных построчно. Я хочу отобразить значения в jsp, но не знаю, как связать jsp с java.

В java-классе listBook - это Arraylist типа BookBean.

Класс BookDao:

public  ArrayList<BookBean> listBooks = new ArrayList<>();

....

System.out.println(listBooks.get(0).getId()); ->display id of first row
System.out.println(listBooks.get(0).getTitle()); ->display title of first row
System.out.println(listBooks.get(0).getAuthor());

В моем классе Controller у меня есть:

    public String showBooks(Model bookModel){
        bookModel.addAttribute("bookAttribute", new BookDao());
        return "book-list";
    }

Я хочу напечатать результаты listBook в jsp, используя Модель из Контроллера. Как я могу это сделать?

BookDao:
public  ArrayList<BookBean> listBooks = new ArrayList<>();
 public void generateBookList() {
        try {
            Connection connection = ConnectToDatabase.createConnection();
            if (connection != null) {
                PreparedStatement preparedStatement = connection.prepareStatement("SELECT * from book ");
                ResultSet resultSet = preparedStatement.executeQuery();
                while (resultSet.next()) {
                    BookBean bookBean = new BookBean(resultSet.getInt("id_book"), resultSet.getString("title"), resultSet.getString("author"), resultSet.getString("publishDate"), resultSet.getInt("quantity"), resultSet.getString("bookPrice"));
                    listBooks.add(bookBean);
                } }
        } catch (Exception e) {
            e.printStackTrace();
        }}

BookController, чтобы открыть страницу jsp "book-list.jsp":

@Controller
public class BookController {
    @RequestMapping("/showBooks")
    public String showBooks(Model bookModel){
        bookModel.addAttribute("bookAttribute", new BookDao());
        return "book/book-list";
    }
}

Я хочу получить доступ к «списку книг» в jsp через модель, созданную в контроллере. Я думал о JSTL, но я не могу написать соответствующий код.

Ответы [ 2 ]

1 голос
/ 13 апреля 2019

Вы можете использовать основной тег jstl <c:forEach>.Если вам нужно зациклить свой список, вы можете сделать что-то вроде этого:

В вашем BookController передать свой список модели:

 model.addAttribute("bookList", yourList);

В JSP:

...
<c:forEach items="${bookList}" var="book"> 
${book.id}  <%-- BookBean fields that you want print out--%>
${book.title}
<%-- another fields --%>
</c:forEach>
...

см. Официальную документацию оракула для получения более подробной информации

0 голосов
/ 13 апреля 2019

На странице JSP просто сделайте следующее:

<%
   out.println(listBooks.get(0).getId()); ->display id of first row
   out.println(listBooks.get(0).getTitle()); ->display title of first row
   out.println(listBooks.get(0).getAuthor());
%>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...