gpt4 book ai didi

java - 如何将对象逐一添加到数组列表中以形成完整的列表

转载 作者:行者123 更新时间:2023-11-30 04:36:43 27 4
gpt4 key购买 nike

我有一个类(class),他们根据其 bookid 获取图书列表。

获取列表的代码:
Bookdetails book=new Bookdetails();book = dao.listBookDetailsById(Integer.parseInt(bookid));

根据其 ID 获取一本书后,我将该书插入到一个列表中,并将其放入 session 中并将其返回到我的 jsp 页面。

将书籍插入列表的代码`

for(int i=1;i<=1;i++)
{
book = dao.listBookDetailsById(Integer.parseInt(bookid));
books.add(book);
}
session.put(BillTransactionBooksConstants.BOK, books );
lists = (List) session.get( BillTransactionBooksConstants.BOK );
System.out.println(lists.size()); `

注意:每次用户单击 jsp 页面中的一行时,bookid 都会出现在我的操作类中

但是我的问题是:当我尝试将书籍添加到列表中时,它只将 1 本书添加到列表中。当用户传递另一本书 ID 添加到数组列表中时,它不会插入到前一本书的列表中。我的列表大小始终显示 1。

当用户将 bookid 传递给我的操作类时,我想根据这些书籍的 id 将所有书籍插入到数组列表中。

请帮我解决这个问题。

完整的操作类代码:

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

import v.esoft.actions.interceptor.VisionBooksConstants;
import v.esoft.dao.BookdetailsDAO.BookdetailsDAO;
import v.esoft.pojos.Bookdetails;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class AddBookToSession extends ActionSupport {
Bookdetails book=new Bookdetails();
List<Bookdetails> books = new ArrayList<Bookdetails>();
List<Bookdetails> lists = new ArrayList<Bookdetails>();
BookdetailsDAO dao = new BookdetailsDAO();
Map session = ActionContext.getContext().getSession();

@SuppressWarnings("unchecked")
public String execute()
{
HttpServletRequest request = ServletActionContext.getRequest();


String bookid = request.getParameter("bid");


System.out.println("---------------Bookid-"+bookid);


for(int i=1;i<=1;i++)
{
book = dao.listBookDetailsById(Integer.parseInt(bookid));
System.out.println("---------------Bookid-"+book);
books.add(book);
}
session.put(BillTransactionBooksConstants.BOK, books );
lists = (List) session.get( BillTransactionBooksConstants.BOK );
System.out.println(lists.size());

return SUCCESS;
}

public Bookdetails getBook() {
return book;
}

public void setBook(Bookdetails book) {
this.book = book;
}

public List<Bookdetails> getBooks() {
return books;
}

public void setBooks(List<Bookdetails> books) {
this.books = books;
}

public List<Bookdetails> getLists() {
return lists;
}

public void setLists(List<Bookdetails> lists) {
this.lists = lists;
}
}

最佳答案

问题是您没有从 session 中加载列表,因此每次有新请求时您都会创建一个新列表。

已编辑:第一次尝试从 session 加载列表时会出现提示,因此我们需要创建 ArrayList。您可能可以在某些初始化例程中执行此操作,但以下代码提供了一个很好的解决方法。

试试这个:

books = (List) session.get( BillTransactionBooksConstants.BOK );

if ( books == null ) books = new ArrayList<Bookdetails>();

book = dao.listBookDetailsById(Integer.parseInt(bookid));
books.add(book);
session.put(BillTransactionBooksConstants.BOK, books );

希望它能起作用。

关于java - 如何将对象逐一添加到数组列表中以形成完整的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13320293/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com