当前位置: 首页 > 知识库问答 >
问题:

在Portlet中保存和加载操作-jsp文件找不到该文件

司徒高寒
2023-03-14

我正在生成。Liferay portlet中的svg文件将保存在服务器(JBoss AS)上的svg文件夹中。这些文件生成并保存在中。java类,如下所示:

private void saveSVG(Document doc, String fileName) {
    // save svg to file
    try {
        File file = new File("svg/" + fileName + ".svg"); // make file
        PrintWriter writer;
        writer = new PrintWriter(new FileOutputStream(file)); // write and
                                                                // save file
        DOMUtilities.writeDocument(doc, writer);
        writer.flush();
        writer.close();

        System.out.println("File path: " + file.getPath());
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

该文件保存在server/bin/svg目录中。但是当我试图访问我的数据库中的文件时。jsp页面,它似乎找不到文件(可能正在另一个目录中查找)。我怎样才能告诉它,所需的文件在哪里?我可以使用绝对路径,将其存储在某个位置并将其传递给。jsp页面,但这似乎不是非常优雅的解决方案。

<object data="svg/topBar.svg" type="image/svg+xml"></object> 

或者,如何将文件保存到一个相对路径中。jsp页面将使用上面的代码找到它?

谢谢你的帮助!

编辑:“topBar.svg”显然是我在本例中使用的文件名

共有1个答案

华良才
2023-03-14

问题是,在Java代码中使用new File(),在启动JBoss时相对于命令行位置的位置创建文件,而JSP中的路径相对于webapp上下文。

不确定,但我认为你可以试试:

File File=new File(getPortletContext()。getRealPath(“svg/topBar.svg”)

 类似资料:
  • 问题内容: 从到目前为止的经验来看,有几种不同的方法可以将TensorFlow图转储到文件中,然后再将其加载到另一个程序中,但是我无法找到关于它们如何工作的清晰示例/信息。我已经知道的是: 使用a将模型的变量保存到检查点文件(.ckpt)中,并在以后还原它们(源) 将模型保存到.pb文件,然后使用和(source)将其加载回 从.pb文件加载模型,对其进行重新训练,然后使用Bazel将其转储到新的

  • 使用Spring引导启动器。 资源文件夹具有以下结构。正如大家所见,你好。jsp位于templates文件夹中。这些都包含在应用程序中。属性: 和一个简单的控制器: 但是得到404。 控制器方法正在确定输入。 尝试了以下答案中的建议,尝试使用webapp,但没有帮助:/WEB-INF根本不是在目标内部创建的,似乎maven忽略了webapp和WEB-INF文件夹。

  • 我有一个项目,其中包含页面文件夹中的单个页面以及一些javascript库和代码。我将它们捆绑到WAR中并将其部署在CentOS系统中。但是当我尝试访问它时,我得到了错误。错误交替出现在 和 我在本地机器中部署它没有问题。 编辑:配置 这是CentOS中tomcat的配置,我的本地机配置相同,除了

  • 我有一个应用程序,它在根文件夹的lib文件夹中加载一个jar文件,当我把这个根文件夹放在C:\或C:\someFolder中时,它工作得很好,但当我把它放在“程序文件(x86)”中时,它返回了FileNotFoundException,即使在管理模式下已经存在并正在运行cmd。 我得到System.out.println来调试信息并返回正确的路径。 从应用程序中使用println的Stacktra

  • 问题内容: 我有一堂课,为游戏中的玩家提供服务,创建他们以及其他东西。 我需要将这些播放器对象保存在文件中,以便以后使用。我已经尝试过pickle模块,但是我不知道如何保存多个对象并再次加载它们?有没有办法做到这一点,还是应该使用其他类(例如列表)并将对象保存并加载到列表中? 有没有更好的办法? 问题答案: 到目前为止,使用列表,元组或字典是最常见的方法: 打印: 但是,泡菜文件 可以 包含任意数

  • 我用intelliJ创建了一个简单的Spring Boot Web应用程序。我放置了一个简单的。jsp文件位于/src/main/resources/templates/文件夹中,其中包含一些基本的HTML。 我试图在控制器中返回这个,但我得到了这个错误; 我假设Spring找不到。jsp文件,但控制台中没有出现其他错误来提供任何进一步的信息。 这是我的简单控制器; 我的申请表中包括了以下内容。财