【发布时间】:2012-07-18 19:29:58
【问题描述】:
Liferay 中doView() 和render() 函数之间的实际区别是什么?还有renderRequest和resourceRequest有什么区别?
【问题讨论】:
Liferay 中doView() 和render() 函数之间的实际区别是什么?还有renderRequest和resourceRequest有什么区别?
【问题讨论】:
doView() = 在 VIEW 模式下处理渲染请求。
render() = 此方法调用doDispath() 方法并使用getTitle() 方法设置portlet 的标题。然后它根据RenderRequest 中指定的portlet 模式调用doView()、doEdit()、doHelp() 等之一。
同样,RenderRequest 是当您想要在 portlet 的 VIEW 模式下处理请求时。如果您的 portlet 使用其他资源来呈现视图(即图像、JavaScript 文件等),那么呈现视图的 JSP 将使用 <portlet:resourceURL /> 标记生成这些资源的有效 URL。这些 URL 将使用一对 ResourceRequest 和 ResourceResponse 对象进行处理。
尽管您可以覆盖资源阶段,但请记住,当您使用ResourceRequest/ResourceResponse 服务时,portlet 无法更改当前的 portlet 模式、窗口状态或呈现参数。并且在资源 url 上设置的参数不是渲染参数,它们仅对当前资源请求有效。
【讨论】:
Portlets in action 是一本很好的书,可以帮助您了解基本概念,对于 Liferay,您可以尝试 Liferay in action 或Liferay wiki 或 Liferay 文档