Java 编辑doView()上的响应内容

Java 编辑doView()上的响应内容,java,portlet,jsr286,jsr168,Java,Portlet,Jsr286,Jsr168,我有一个简单的jsr286Portlet,它显示用户手册(纯HTMLcode,而不是JSP) 实际上,我的doView方法只包含以下内容: 公共类UserManualPortlet扩展了GenericPortlet { @凌驾 受保护的void doView(RenderRequest请求、RenderResponse响应) 抛出PortletException,IOException { PortletRequestDispatcher rd=getPortletContext().getRe

我有一个简单的
jsr286
Portlet,它显示用户手册(纯
HTML
code,而不是
JSP

实际上,我的
doView
方法只包含以下内容:

公共类UserManualPortlet扩展了GenericPortlet
{
@凌驾
受保护的void doView(RenderRequest请求、RenderResponse响应)
抛出PortletException,IOException
{
PortletRequestDispatcher rd=getPortletContext().getRequestDispatcher(
“/html/usermanual.html”);
包括(请求、响应);
}
}
这是预期的工作,但我有困难时,包括图像。我知道图像的路径应该是:

”/>
但是,包含用户手册的HTML文件在其他地方使用,因此我希望将其保留为纯HTML文件

有没有一种方法可以动态地用上面的例子替换我的经典
图像URL
?可能使用响应的
PrintWriter

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


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

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


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

Nice,但是您自己加载意味着什么呢?使用
PortletContext.getRealPath(“/html/usermanual.html”)
来知道文件的确切位置,然后创建
BufferedReader
来加载内容、解析和替换,然后将结果写入portlet的输出流或编写器。