【问题标题】:How to display ArrayList items from java in jsp?如何在jsp中显示来自java的ArrayList项目?
【发布时间】:2019-04-13 10:40:46
【问题描述】:

我生成了一个 Arraylist,我在其中逐行从数据库中获取项目。我想在jsp中显示值,但是不知道jsp怎么绑定java。

在java类中,listBook是一个BookBean类型的Arraylist。

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";
    }

我想使用控制器中的模型在 jsp 中打印 listBook 的结果。我该怎么做?

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 中的“listBooks”。我正在考虑jstl,但我无法相应地编写代码。

【问题讨论】:

  • 发布你的jsp页面

标签: java mysql jsp jstl


【解决方案1】:

您可以使用 jstl 核心标签&lt;c:forEach&gt;。如果你需要遍历你的列表,你可以这样做:

在您的 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>
...

see official oracle documentation for more detail

【讨论】:

    【解决方案2】:

    在 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());
    %>
    

    【讨论】:

    • 我正在考虑通过控制器中的模型 bookModel 访问列表...我该怎么做?
    • 请将ModelBookDao 课程的代码也贴出来,更清楚地说明您的意图。
    • 我认为你需要简化一些东西。您需要正确创建模型和控制器。阅读以下文章了解模型视图控制器概念:baeldung.com/mvc-servlet-jsp
    • 你的控制器应该是一个 Servlet。
    猜你喜欢
    • 2015-04-15
    • 2013-04-06
    • 1970-01-01
    • 2014-01-31
    • 1970-01-01
    • 2016-04-02
    • 1970-01-01
    • 2014-06-30
    • 2023-02-17
    相关资源
    最近更新 更多