私は以下のマネージドBeanを持っています。しかし、同じ Bean にポストバックするたびに、つまり updateFileList を呼び出しています。FileDAO の新しいインスタンスを取得します。
どうすればこれを防ぐことができますか? マネージド Bean 内に DAO を配置することは安全ですか。
@ManagedBean(name = "ファイル") @ViewScoped public class FileController は Serializable を実装します { private static final long serialVersionUID = 1L; プライベート List<LoadFileLog> fileList = null; プライベート日付 selectedDate; FileDAO fileDAO; public FileController() { System.out.println(" In file Controller コンストラクター"); ServletContext servletContext = (ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext(); ApplicationContext コンテキスト = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext); fileDAO = (FileDAO) context.getBean("FileDAO"); } public FileDAO getFileDAO() { fileDAO を返します。 } public void setFileDAO(FileDAO fileDAO) { this.fileDAO = fileDAO; } public List<LoadFileLog> getFileList() { fileList を返します。 } 公開日 getSelectedDate() { selectedDate を返します。 } public void setSelectedDate(選択した日付の日付) { this.selectedDate = selectedDate; } public void updateFileList() { SystemController systemControl = (SystemController) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("system"); リスト systemList = new ArrayList(); if (systemControl != null) { systemControl.populateSelectedSystems(); systemList = systemControl.getSelectedSysIdList(); } if (selectedDate != null) { fileList = getFileDAO().getFiles(systemList, selectedDate); } } }
ありがとう!