我有一个简单的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
文件。
欢迎任何解决方案或想法。
答案 0 :(得分:0)
使用JSR-268 portlet,您可以更好地引用资源:使用ResourceURL
创建renderResponse.createResourceURL()
,然后在resourceID
中设置ResourceURL
。这应该可以在所有portlet容器中提供更一致的结果。
那就是说,如果你想从usermanual.html
修改生成的内容,但你不想将它转换为JSP,那么我会在我的文件内容上加载文件内容,而不是使用请求调度程序。拥有,在我进行URL替换的同时解析它,然后将所有内容打印到portlet的响应中。