在portlet呈现之前调用web服务。 Liferay的

时间:2015-08-12 21:29:02

标签: java jsp liferay portlet

我有一个portlet,我需要在portlet呈现之前调用web服务,并将此调用的结果放在* jsp的字段中。

我尝试覆盖"渲染"和#34; doView" portlet类中的方法并调用web服务...好的,这项工作,但我不能将结果放在* jsp中,因为该方法没有" ActionResponse"去做这个。 如何在* jsp?

中传递调用结果

感谢。

1 个答案:

答案 0 :(得分:1)

要将Web服务调用的结果传递给JSP,可以将结果作为请求属性添加到请求中。使用JSP中的<portlet:defineObjects />标记在页面上提供请求对象。然后检索您添加到请求的对象。例如,您可以在portlet的渲染方法中使用以下内容(假设您的portlet的渲染方法需要RenderRequest requestRenderResponse response个参数):

request.setAttribute("myWebServiceResult", myWebServiceResult);

然后将以下内容添加到JSP的顶部:

<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>

<portlet:defineObjects />

然后你可以像这样检索请求属性:

Object myWebServiceResult = renderRequest.getAttribute("myWebServiceResult");

renderRequest代码提供的<portlet:defineObjects />变量的类型为javax.portlet.RenderRequest,其范围为javax.portlet.PortletRequestgetAttribute(String)方法返回Object但您可以将其强制转换为您在portlet的渲染方法中附加的对象的类型。

有关<portlet:defineObjects />标记的信息,请参阅https://blogs.oracle.com/deepakg/entry/jsr286_defineobjects_tag