Я создал bean-компонент ApplicationScoped
, у которого есть метод PostConstruct
с именем start. Всякий раз, когда я хочу, чтобы получить экземпляр FacesContext
в методе запуска и возвращает null
:Экземпляр FacesContext имеет значение null в ApplicationScoped Managedbean
@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
.
Есть ли другой способ сделать это?
Какую версию JSF вы работаете и в какой контейнер? – kolossus
Я использую последнюю версию jsf (2.2.8-02). –
Мне пришлось реализовать мой класс как «Listener», поэтому я могу получить доступ к 'ServletContext' в' contextInitialized (ServletContextEvent sce) ' –