【发布时间】:2014-10-11 12:28:07
【问题描述】:
我创建了一个 ApplicationScoped bean,它有一个名为 start 的 PostConstruct 方法。
每当我想在 start 方法中获取FacesContext 的实例并返回null:
@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?
我想在启动方法中获取我的下载目录的真实路径,我不知道如何在不使用FaceContext的情况下获取我的目录路径。
还有其他方法吗?
【问题讨论】:
-
您运行的是什么版本的 JSF 以及在什么容器中?
-
我正在使用最新版本的 jsf (2.2.8-02)。
-
我必须将我的类实现为
Listener,所以我可以在contextInitialized(ServletContextEvent sce)中访问ServletContext -
您应该使用
getResourceAsStream而不是getRealPathstackoverflow.com/a/12160863/892994 -
@erencan my
FacesContext为空,无法访问。
标签: jsf managed-bean postconstruct facescontext