我的要求如下:
信息:冰山上传组件,将文件上传到相对文件夹,并为每个用户创建一个带有sessionId的文件夹中的子目录。
需求:在sessionDestroyed为每个用户,我想得到真正的路径,以删除当前用户文件夹。
我知道如何获得JSF的真正路径,如下所示:
ServletContext ctx = (ServletContext) FacesContext.getCurrentInstance()
.getExternalContext().getContext();
String deploymentDirectoryPath = ctx.getRealPath("/");问题:--如果您试图在sessionDestroyed中获得实际路径--您将得到空指针异常,所以我想知道是否有一种方法可以在侦听器中初始化变量deploymentDirectoryPath,以便在sessionDestroyed方法中使用它,或者在应用程序启动时初始化真正的路径变量并在这里使用它?
请建议如何解决这个问题。
发布于 2013-09-30 10:43:16
你可以得到真正的路径如下:-
FacesContext.getCurrentInstance().getExternalContext().getRealPath("/");编辑:-
正如BalusC在他的一个答案中提到的,在使用getRealPath("/")之前,您应该三思,因为如果没有选择展开war文件,那么getRealPath("/")可能会返回null。
使用getExternalContext.getResourceAsStream代替。根据文档,在应用程序启动或关闭期间调用此方法是有效的。
发布于 2014-02-27 15:32:54
根据这里和其他地方的BalusC声音建议,可以编写如下通用函数:
String getPath(){
ExternalContext tmpEC;
tmpEC = FacesContext.getCurrentInstance().getExternalContext();
String realPath=tmpEC.getRealPath("/");
return realPath;
}https://stackoverflow.com/questions/8278859
复制相似问题