2012-07-25 3 views
0

Я использую Struts2 + Hibernate. У меня есть форму на странице JSP, в которой есть выберите, что мне нужно заполнить из базы данных. Я реализовал класс DAO BookDAO (selectBooks(), updateBook (Book book)). Я создал класс Action, в котором я объявлял ArrayList книги, и объект класса BookDAO. Кажется, что мне нужно определить функцию в классе Action, которые вызывают selectBooks и заполняют мой ArrayList, но это действие следует вызывать автоматически при загрузке моей страницы JSP. Является ли Ajax необходимым в моем случае? Спасибо.Как заполнить выбор из базы данных в Struts2 + Hibernate?

ответ

0

Нет, AJAX не требуется. В коде метода действия, инициализировать список:

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

страница JSP будет иметь доступ к списку книг.

+0

Большое спасибо за этот ответ. Хотя он прост, он отлично работает для меня! Так что сделайте для вас и для Рассела преимущество, и отметьте его как разрешенный :) –

1

Ответ JB Nizet хороший, я бы предложил несколько иной подход.

Проблема с назначением ArrayList в методе выполнения заключается в том, что он будет работать только для этого конкретного метода и должен быть воссоздан, если будут добавлены другие методы действий.

Вам лучше сделать действие Подготовимо и добавить метод подготовки для выполнения всех вызовов базы данных и назначения списков. Таким образом, все ваши данные будут доступны по всему классу действий без необходимости дублирования кода на этом пути.

Метод подготовки будет называться первым, перед любым другим действием.

public class MyAction extends ActionSupport implements Preparable{ 

    private ArrayList<Books> books; 

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

    ... 

} 
+0

Спасибо! Иногда я думаю сложным образом, пока не потеряюсь. Я думал о перенаправлении действия и так далее. Но здесь это просто и полезно. Спасибо! –