生成PORTLET URL
回想一下,用户可以在一个页面上放置多个portlet。作为一名开发人员,您不知道会与哪些其他portlet共享一个页面。这意味着不能像习惯的那样为应用程序中的各种功能定义URL。
例如,考虑一个用户与博客应用程序放在同一页面上的日历应用程序。要实现删除相应应用程序中的日历事件和博客条目的功能,应用程序开发人员将该del参数追加到URL中,并为其提供主键值,以便应用程序可以查找和删除日历事件或博客条目。由于这两个应用程序读取此参数,它们的删除功能会发生冲突
Liferay Portal的解决方案是由系统生成的URL。通过为每项功能生成一个唯一的URL参数,Liferay Portal允许具有相同或相似功能的多个应用程序和谐共存。不幸的是,为了保证portlet工作,必须手动添加对它的支持。幸运的是,这样做非常简单。
在view.jsp,按照以下步骤在您的portlet中启用系统生成的URL:
- 添加这些标签
<%@ include file="/init.jsp" %>到<aui:button-row>标签上方:<portlet:renderURL var="addEntryURL"> <portlet:param name="mvcPath" value="/edit_entry.jsp"></portlet:param> </portlet:renderURL> <aui:button>添加如下属性,在标记value="Add Entry"之前:onClick="<%= addEntryURL.toString() %>"view.jsp页面现在应该如下所示:<%@ include file="/init.jsp" %> <portlet:renderURL var="addEntryURL"> <portlet:param name="mvcPath" value="/edit_entry.jsp"></portlet:param> </portlet:renderURL> <aui:button-row> <aui:button onClick="<%= addEntryURL.toString() %>" value="Add Entry"></aui:button> </aui:button-row>
The <portlet:renderURL> tag’s var attribute creates the addEntryURL variable to hold the system-generated URL. The <portlet:param> tag defines a URL parameter to append to the URL. In this example, a URL parameter named mvcPath with a value of /edit_entry is appended to the URL.
请注意,你的GuestbookPortlet类(位于你的guestbook-web模块的com.liferay.docs.guestbook.portlet包中)扩展了Liferay的MVCPortlet类。在Liferay MVC portlet中,mvcPathURL参数表示portlet中的页面。要导航到portlet中的另一个页面,请使用带有参数的门户网址mvcPath链接到特定页面。
在上面的例子中,你创建了一个renderURL指向你的应用程序的edit_entry.jsp页面。请注意,使用AlloyUI按钮来跟随生成的URL不是必需的。您可以使用任何包含链接的HTML构造。用户可以点击你的按钮访问你的应用程序edit_entry.jsp页面。目前会产生一个错误,因为edit_entry.jsp还不存在。下一步创造edit_entry.jsp。
本文介绍如何在Liferay中为portlet生成唯一URL参数,确保不同应用在同一页面上和谐共存。通过具体示例展示了如何使用portlet:renderURL标签为特定功能创建URL。
2657

被折叠的 条评论
为什么被折叠?



