编辑doView()上的响应内容

时间:2012-08-22 08:52:39

标签: java portlet jsr286 jsr168

我有一个简单的JSR 286 Portlet,它显示了一个用户手册(纯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文件。

欢迎任何解决方案或想法。

1 个答案:

答案 0 :(得分:0)

使用JSR-268 portlet,您可以更好地引用资源:使用ResourceURL创建renderResponse.createResourceURL(),然后在resourceID中设置ResourceURL。这应该可以在所有portlet容器中提供更一致的结果。

那就是说,如果你想从usermanual.html修改生成的内容,但你不想将它转换为JSP,那么我会在我的文件内容上加载文件内容,而不是使用请求调度程序。拥有,在我进行URL替换的同时解析它,然后将所有内容打印到portlet的响应中。

相关问题