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的输出流或编写器。