我正在使用Struts2 + Hibernate。我在JSP页面中有一个表单,其中有一个选择我需要从数据库填充它。我已经实现了DAO类BookDAO(selectBooks(),updateBook(Book book))。我创建了Action类,其中我声明了Book的ArrayList和类BookDAO的对象。看来我需要在Action类中定义一个函数来调用selectBooks并填充我的ArrayList,但这个动作应该在加载我的JSP页面时自动调用。在我的情况下,Ajax是否必要?谢谢。
答案 0 :(得分:1)
JB Nizet的答案很好,但我建议采用略有不同的方法。
将ArrayList赋值放在execute方法中的问题是它只适用于该特定方法,如果添加了其他操作方法,则需要重新创建。
最好使操作Preparable并添加prepare方法来执行所有数据库调用和列表分配。这样,您可以在整个操作类中使用所有数据,而无需在此过程中复制代码。
首先,在操作中的任何其他方法之前调用prepare方法。
public class MyAction extends ActionSupport implements Preparable{
private ArrayList<Books> books;
@Override
public void prepare() throws Exception {
this.books = bookDAO.selectBooks();
}
...
}
答案 1 :(得分:0)
不,AJAX没有必要。在action方法的代码中,初始化列表:
public String execute() {
this.books = bookDAO.selectBooks();
return SUCCESS;
}
然后,JSP页面可以访问书籍列表。