使用资源URL

一个Portlet可能需要创建引用该Portlet本身的URL。例如:当用户对一个引用PortletURL进行操作时点击链接或提交表单),这种行为将针对Portlet门户产生一个新的客户端请求这些URLs被称为Portlet URLs Portlet API定义了PortletURL与ResourceURL接口 Portlet必须通过使用PortletURLResourceURL的对象来创建Portlet的URL下面是PortletURL扩展了BaseURL的一些方法:

void write(java.io.Writer out, boolean escapeXML);
void setWindowState (WindowState windowState);
void setPortletMode (PortletMode portletMode);
PortletMode getPortletMode ();
WindowState getWindowState ();
void removePublicRenderParameter(String name);

ResourceURL创建的链接,用户点击时,将导致ResourceServingPortlet接口serveResource方法被调用资源URL可以通过RenderResponse与ResourceResponse上的createResourceURL方法创建例如:

 

ResourceURL URL= renderResponse.createResourceURL();

现在,您可以在URL上设置参数,方法就像你在portlet URL设置参数一样。您在serveResource方法调用时接收并使用这些参数。为了明确标识资源,您还可以在资源URL上设置一个额外的资源ID。如果您扩展了GenericPortlet,在serveResource方法调用中,你可以转发这个资源ID。此外,您还可以把你的资源的路径设置为ID

 

url.setResourceID("WEB-INF/portlet-ext.xml");

在这种情况下,GenericPortlet自动分发到用户界面视图,通过包括portlet标记库,在界面文件中可以利用portlet的状态信息。


ResourceURL不能设置新的呈现参数,portlet模式,或窗口的状态。发生此限制,因为serveResource调用不生成一个完整的新的门户页面,但他们返回serveResource的响应。因此,门户页面不会有机会更新页面的其他部分,在那,这个信息可能被编码。此外,静态资源,如打包在portlet WAR文档包中的GIF 文件,一般应引用静态资源的网址,例如,response.encodeURL(request.getContextPath()+" /images/my-image.gif")。这是因为静态资源使用portletserveResource方法会造成不必要的性能开销。

 

你可能感兴趣的:(url)