har*_*ari 9 java jsf managed-bean
我试图访问jsf托管bean中的示例/ web文件夹(见图中的下图),但似乎无法找到一种方法来实现它

谢谢
Pau*_*gas 17
尝试
FacesContext.getCurrentInstance().getExternalContext().getRequestContextPath()
Run Code Online (Sandbox Code Playgroud)
用于构建相对URL到应用程序中的资源.
如果你想要真正的道路......
ServletContext ctx = (ServletContext) FacesContext.getCurrentInstance()
.getExternalContext().getContext();
String realPath = ctx.getRealPath("/");
Run Code Online (Sandbox Code Playgroud)
Bal*_*usC 14
如果你想File出于某种原因得到它,那么你需要ExternalContext#getRealPath().这会将相对Web路径转换为绝对磁盘文件系统.由于您需要web的根文件夹,只需传入/:
String absoluteWebPath = externalContext.getRealPath("/");
File webRoot = new File(absoluteWebPath);
// ...
Run Code Online (Sandbox Code Playgroud)
与具体问题无关,无论你有什么功能要求,你认为拥有一个绝对的本地磁盘文件系统路径到web文件夹是正确的解决方案,它绝对要以不同的方式解决.事实上,根据你对其他答案的评论,
因为我试图在文件夹中上传一些文件并使用相对路径
你走错了路.如果您打算将上传的文件保留的时间超过webapp的部署生命周期,则不应将其存储在那里.无论何时重新部署webapp(甚至在重新启动服务器时在某些服务器配置上),上传的文件都会完全丢失,因为它们不包含在原始WAR文件中.更重要的是,一些繁重的服务器配置根本不会在磁盘上扩展WAR,但在内存中,getRealPath()它将始终返回null.
而是将其存储在服务器部署文件夹之外的固定磁盘文件系统路径中.依次将该路径添加为新的服务器上下文或docroot,以便可以在不同的(虚拟)上下文路径上访问它.或者homegrow一个servlet,InputStream它从磁盘中获取它并将其写入OutputStream响应.另请参阅此相关答案:上载的图像仅在刷新页面后可用
| 归档时间: |
|
| 查看次数: |
35791 次 |
| 最近记录: |