我有一个portlet,我需要在portlet呈现之前调用web服务,并将此调用的结果放在* jsp的字段中。
我尝试覆盖"渲染"和#34; doView" portlet类中的方法并调用web服务...好的,这项工作,但我不能将结果放在* jsp中,因为该方法没有" ActionResponse"去做这个。 如何在* jsp?
中传递调用结果感谢。
答案 0 :(得分:1)
要将Web服务调用的结果传递给JSP,可以将结果作为请求属性添加到请求中。使用JSP中的<portlet:defineObjects />
标记在页面上提供请求对象。然后检索您添加到请求的对象。例如,您可以在portlet的渲染方法中使用以下内容(假设您的portlet的渲染方法需要RenderRequest request
和RenderResponse 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.PortletRequest
。 getAttribute(String)
方法返回Object
但您可以将其强制转换为您在portlet的渲染方法中附加的对象的类型。
有关<portlet:defineObjects />
标记的信息,请参阅https://blogs.oracle.com/deepakg/entry/jsr286_defineobjects_tag