1

サーバー(JBoss AS)にあるsvgフォルダーに保存するLiferayポートレットで.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」は明らかに、この例で使用しているファイル名です

4

1 に答える 1

2

問題は、Java コードで new File() を使用して、JBoss を起動したときのコマンド ラインの場所に相対的な場所にファイルを作成し、JSP 内のパスは webapp コンテキストに相対的であることです。

よくわかりませんが、試すことができると思います:

File file = new File(getPortletContext().getRealPath("svg/topBar.svg"))

于 2013-06-04T08:32:31.450 に答える