3

start という名前ApplicationScopedのメソッドを持つ Beanを作成しました。開始メソッドでのPostConstructインスタンスを取得したいときはいつでも、それが返されます:FacesContextnull

@ManagedBean
@ApplicationScoped
public class RemoveOldFilesScheduler implements Serializable {

    @PostConstruct
    private void start() {
        final FacesContext facesContext = FacesContext.getCurrentInstance();
        if(facesContext != null) {
            String realDownloadDirName = facesContext.getExternalContext().getRealPath("/") + DOWNLOAD_DIRECTORY;
        File downloadDir = new File(realDownloadDirName);
        if (downloadDir.exists()) {
            removeOldFiles(downloadDir.listFiles());
        }
}
}

facesContextこの状況でアクセスするにはどうすればよいですか?

start メソッドでダウンロード ディレクトリの実際のパスを取得したいのですが、を使用せずにディレクトリのパスを取得する方法がわかりませんFaceContext

それを行う別の方法はありますか?

4

1 に答える 1

0

私は自分のクラスを次のように実装しましたが、それは機能し、inメソッドにListenerアクセスできました。ServletContextcontextInitialized

    public class RemoveOldFilesListener implements ServletContextListener {

    public ServletContext servletContext;

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        servletContext = sce.getServletContext();
        String realDownloadDirName = servletContext.getRealPath("/") + DOWNLOAD_DIRECTORY;
        File downloadDir = new File(realDownloadDirName);
        if (downloadDir.exists()) {
            removeOldFiles(downloadDir.listFiles());
        }
}
于 2014-10-12T08:46:43.837 に答える