Servlets 如何在Grails中获得字符串形式的实际路径
使用grails-3.3.1开发项目并生成可运行的WAR文件。当我使用命令运行时:Servlets 如何在Grails中获得字符串形式的实际路径,servlets,grails,embedded-tomcat-8,grails-3.3,Servlets,Grails,Embedded Tomcat 8,Grails 3.3,使用grails-3.3.1开发项目并生成可运行的WAR文件。当我使用命令运行时: java -jar build/libs/myproject-0.1.war 它返回以下行的null: serveltContext.getRealPath("/someSource"); 但当部署在Tomcat容器中时,它工作正常 然后尝试了以下方法: servletContext.getResource("someSource").getPath(); 它正在返回,但不是预期的,也不是getRealPa
java -jar build/libs/myproject-0.1.war
它返回以下行的null
:
serveltContext.getRealPath("/someSource");
但当部署在Tomcat容器中时,它工作正常
然后尝试了以下方法:
servletContext.getResource("someSource").getPath();
它正在返回,但不是预期的,也不是getRealPath()
返回的。
它是这样回来的:
D:/myprojects/myproject/build/libs/myproject-01.war*/
这对我没用。找到建议使用
getResourceAsStream()
的答案,但我不想要资源,我只想要String
我找不到一个既能在本地工作又能在容器中部署的解决方案。我最终使用此解决方案来获取路径,具体取决于代码运行的环境:
def path
if (Environment.current == Environment.DEVELOPMENT) {
path = java.nio.file.FileSystems.default.getPath("someSource").toAbsolutePath().toString()
} else {
path = ServletContextHolder.servletContext.getRealPath("/someSource")
}
我无法找到一个既能在本地工作又能在容器中部署的解决方案。我最终使用此解决方案来获取路径,具体取决于代码运行的环境:
def path
if (Environment.current == Environment.DEVELOPMENT) {
path = java.nio.file.FileSystems.default.getPath("someSource").toAbsolutePath().toString()
} else {
path = ServletContextHolder.servletContext.getRealPath("/someSource")
}
它在Grails应用程序目录结构中的位置?另外,通过获取
字符串
路径而不是完整的文件/资源,您试图实现什么?我需要将该字符串作为参数传递给另一个资源,这将创建一个子报告,它位于Grails应用程序目录结构中的位置。此外,通过只获取字符串
路径而不是完整的文件/资源,您试图实现什么?我需要将该字符串作为参数传递给另一个资源,这将创建一个子报告