2011-07-25 19 views
1

在某个portlet中,有一个我想通过ajax访问的页面。 该页面应该设置一些http标题(至少是状态)。 据我所见,这种头部被擦掉。通过liferay portlet页面传递http标头

问题是 - 我怎么能告诉liferay传递一些特定的头文件?

+0

您使用JSR 286 portlet还是JSR168 portlet? – home

+0

@home JSP168我相信。 – shabunc

+1

JSR 286引入了一个新的API,称为_serveResource_专用于处理XML(AJAX)请求。在这里您可以显式设置HTTP标头。最新的Liferay版本为此JSR提供支持。 – home

回答

4

按设计Portlet无法访问HTTP标头 - 因为您无法预测哪些Portlet将在页面上一起显示。设想一个缓存信息设置为“立即重新验证”,而另一个portlet对每周重新验证感到满意 - 它们全部结束于同一页面。但是,为了克服这个限制,Portletspec 2.0(即JSR-286)将资源提供作为一个单独的生命周期阶段,特别是将这种功能添加到Portlet。但是,这与生成“主”Portlet输出是分开的。

机制将根据您使用的框架而有所不同,对于普通portlet API,在您的问题的评论中建议serveResource作为“home”。您可以从该方法的ResourceRequest/ResourceResponse参数访问HTTP标头,但是 - 通过设计 - 不能通过ActionResponse或RenderResponse。