我有一个简单的 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/