java - 编辑 doView() 上的响应内容

标签 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 文件。

有没有办法用上面的示例动态替换我的经典图像网址?也许使用响应的 PrintWriter

如果这样的事情不可能,我想我需要在 Maven 构建期间生成一个 JSP 文件。

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

最佳答案

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

也就是说,如果您想修改 usermanual.html 生成的内容,但又不想将其转换为 JSP,那么我将加载我自己处理文件内容,在进行 URL 替换的同时对其进行解析,然后将所有内容打印到 portlet 的响应中。

关于java - 编辑 doView() 上的响应内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12069487/

相关文章:

java - 如何在 hybris 中自定义插件?

java - portlet.jar 上的类加载器冲突

spring - Hibernate+Spring访问Websphere数据源

java - 为 Liferay CMS/Portal 编写 Portlet

java - (生菜)只读你不能写一个只读的奴隶

java - 使用 Mockito 测试 REST 删除方法

java - 如何从远程服务器位置读取文本文件

java - 碲中的 Portlet 支持

liferay - 是什么让 portlet 符合 JSR-286 要求?

java - liferay的选项卡元素如何控制打开哪个选项卡