Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 如何在Struts2+Hibernate中填充select from数据库?_Database_Hibernate_Select_Struts2_Auto Populate - Fatal编程技术网

Database 如何在Struts2+Hibernate中填充select from数据库?

Database 如何在Struts2+Hibernate中填充select from数据库?,database,hibernate,select,struts2,auto-populate,Database,Hibernate,Select,Struts2,Auto Populate,我正在使用Struts2+Hibernate。我在JSP页面中有一个表单,其中有一个select,我需要从数据库中填充它。我已经实现了DAO类bookdaoselectbooks,updateBookBook。我已经创建了Action类,其中声明了Book的ArrayList和BookDAO类的对象。似乎我需要在Action类中定义一个函数来调用selectBooks并填充我的ArrayList,但是在加载我的JSP页面时应该自动调用这个操作。我的情况下需要Ajax吗?谢谢。不,没有必要使用AJ

我正在使用Struts2+Hibernate。我在JSP页面中有一个表单,其中有一个select,我需要从数据库中填充它。我已经实现了DAO类bookdaoselectbooks,updateBookBook。我已经创建了Action类,其中声明了Book的ArrayList和BookDAO类的对象。似乎我需要在Action类中定义一个函数来调用selectBooks并填充我的ArrayList,但是在加载我的JSP页面时应该自动调用这个操作。我的情况下需要Ajax吗?谢谢。

不,没有必要使用AJAX。在操作方法的代码中,初始化列表:

public String execute() {
    this.books = bookDAO.selectBooks(); 
    return SUCCESS;
}

JSP页面将可以访问图书列表。

JB Nizet的答案很好,但是我建议使用稍微不同的方法

将ArrayList赋值放在execute方法中的问题是,它只适用于该特定方法,如果添加了其他操作方法,则需要重新创建它

最好是使操作可准备,并添加一个prepare方法来执行所有数据库调用和列表分配。这样,您的所有数据都可以在整个action类中使用,而不必一路上重复代码

将首先调用prepare方法,然后再调用操作中的任何其他方法

public class MyAction extends ActionSupport implements Preparable{

    private ArrayList<Books> books;

    @Override
    public void prepare() throws Exception {
        this.books = bookDAO.selectBooks(); 
    }

    ...

}

非常感谢。有时我会以一种复杂的方式思考,直到迷路。我在思考如何改变行动方向等等。但在这里,它是简单而有用的。非常感谢。非常感谢你的回答。虽然很简单,但对我来说效果很好!所以我要为你和Russell投一票,并将其标记为已解决: