java - 获取绝对路径jsf

标签 java jsf facelets

我想获取我的应用程序的绝对路径,我正在使用以下代码:

String pathToSave = FacesContext.getCurrentInstance()
                .getExternalContext().getRealPath("/");

结果是:

/home/ronaldo/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/Odontonew/

但我正在等待类似这样的东西:/home/ronaldo/workspace/Odontonew/

怎么了?

最佳答案

ExternalContext#getRealPath() 返回相对于 webapp 被部署的位置的路径,而不是 webapp 的开发位置,正如您似乎错误地期望的那样。

但是,变量名 pathToSave 表明了一个更大的问题:您似乎打算将文件保存在那里。这是一个坏主意,原因在以下答案中提到:Uploaded image only available after refreshing the page .简而言之,将它们保存到固定的本地磁盘文件系统路径。请注意,某些服务器提供了使此步骤更容易配置的方法,例如JBoss .

只需停止使用 getRealPath()。你在现实世界中永远不需要它。在我开发 Java Web 应用程序的 10 年中(它在 ServletContext#getRealPath() 的幕后),该方法从来没有用过任何东西。完全忽略该方法。

另见:

关于java - 获取绝对路径jsf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18478825/

相关文章:

java - 返回语句是原子的吗?

java - Jackson 在反序列化过程中对属性进行动态过滤

jsf-2 - 使用通配符加载facelet标签库

java - 将 JSF .xhtml 文件映射到无扩展名

java - 是否可以在不循环的情况下从自定义类的Arraylist中获取产品名称的Arraylist

java - if 语句中的变量未正确计数

javascript - primefaces JSF 多段线上的标记动画

java - 将 Richfaces 4 与 OpenFaces 3 相结合

internet-explorer - 隐藏的 popupPanel 内的 Richfaces dataTable 渲染不良

jakarta-ee - 如何创建自定义标签库