七、 Portlet URLs
由于portlet不像servlet有url对应,但是浏览器最终还是需要通过url来访问portlet的。所有portlet要提供生成portlet url的功能。这些通过portlet容器为每个portlet生成的可以请求相应portlet的url就叫做portlet url。
Portlet URLs
Portlet容器使用PortletResponse中的createActionURL, createRenderURL, createResourceURL三个方法来生成portlet url,PortletResponse中生成PortletURL 或者ResourceURL接口对应的对象。
Render url必须是幂等的,也就意味着不能再render中作修改状态、后台数据的工作,需要特别注意,不能把render url用在form中,否则容器将不会把form中的参数传输给portlet。
BaseURL 接口
BaseURL是一个接口,它有两个子接口PortletURL和ResourceURL,它提供了PortletURL和ResourceURL接口的公共部分.可以通过PortletResponse对象调用createActionURL, createRenderURL, createResourceURL来生成PortletURL/ResourceURL。BaseURL对象可以调用setParameter和setParameters来添加设置参数。Portlet可以调用BaseURL的setProperty、 addProperty方法来设置属性。
PrintWriter writer=response.getWriter(); PortletURL url = response.createRenderURL(); url.setParameter("customer","foo.com"); url.setParameter("show","summary"); writer.print("<A HREF=\""); url.write(writer); writer.print("\">Summary</A>"); |
包含Portlet Mode和 Window State信息
可以调用PortletURL的setWindowState和setPortletMode来设置state,mode.
PrintWriter writer=response.getWriter(); PortletURL actionurl = response.createActionURL(); actionurl.setParameter("paymentMethod","creditCardInProfile"); actionurl.setWindowState(WindowState.MAXIMIZED); writer.print("<FORM METHOD=\"POST\" ACTION=\" "); actionurl.write(writer); writer.print("\">"); writer.print("<INPUT name=\"submit\" type=\"submit\" value=\"改变portlet window state\" />"); writer.print("</FORM>"); |
Portlet URL security
可以调用PortletURL的setSecure来设置portlet安全性,如果没有调用setSecure,默认portlet使用安全性策略与portal一致。
Portlet URL listeners
Portleturl listeners用来在url生成之前提供一个listener,来做一些希望做的事情
总结
本章介绍了Portlet URL的使用方法,请注意在portlet中用代码生成url的方式可以被在jsp中直接使用标签来代替。