使用资源URL

一个Portlet可能需要创建引用该Portlet本身的URL。例如:当用户对一个引用Portlet的URL进行操作时(点击链接或提交表单),这种行为将针对Portlet的门户产生一个新的客户端请求。这些URLs被称为Portlet URLs。 Portlet API定义了PortletURL与ResourceURL接口。 Portlet必须通过使用PortletURL或ResourceURL的对象来创建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方法会造成不必要的性能开销。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值