1

我有一个简单的JSR 286Portlet,它显示用户手册(纯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 portlet,您可以更好地引用资源:ResourceURL使用创建renderResponse.createResourceURL(),然后resourceIDResourceURL. 这应该会在所有 portlet 容器中提供更一致的结果。

也就是说,如果您想修改生成的内容,usermanual.html但又不想将其转换为 JSP,那么我将自己加载文件内容,同时解析它,而不是使用请求调度程序我做了 URL 替换,然后将所有内容打印到 portlet 的响应中。

于 2012-08-22T09:19:38.447 回答