1

JSR 286ユーザー マニュアルを表示する単純なポートレットがあります (純粋なHTMLコードであり、 ではありませんJSP)。

実際、私のdoViewメソッドにはこれが含まれています:

public class UserManualPortlet extends GenericPortlet
{

    @Override
    protected void doView(RenderRequest request, RenderResponse response)
            throws PortletException, IOException
    {
        PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher(
                "/html/usermanual.html");

        rd.include(request, response);    
    }
}

これは期待どおりに機能しますが、画像を含めるときに問題が発生します。画像へのパスは次のようにする必要があることを認識しています:

<img src='<%=renderResponse.encodeURL(renderRequest.getContextPath() + "/html/image.jpg")%>'/> 

しかし、ユーザー マニュアルを含む HTML ファイルは別の場所で使用されているため、純粋な HTML ファイルとして保存したいと考えています。

私の古典を上記の例のようなものに動的に置き換える方法はありますか? images urlsおそらくPrintWriter応答のを使用していますか?

そのようなことが不可能な場合は、ビルドJSP中にファイルを生成する必要があると思います。Maven

解決策やアイデアは大歓迎です。

4

1 に答える 1

0

JSR-268 ポートレットを使用すると、より優れた方法でリソースを参照できます。ResourceURL使用して作成し、. これにより、すべてのポートレット コンテナーでより一貫した結果が得られるはずです。renderResponse.createResourceURL()resourceIDResourceURL

つまり、生成されたコンテンツを変更しusermanual.htmlたいが、それを JSP に変換したくない場合は、リクエスト ディスパッチャを使用する代わりに、自分でファイルのコンテンツをロードし、同時に解析します。 URL を置換してから、すべてのコンテンツをポートレットの応答に出力します。

于 2012-08-22T09:19:38.447 に答える