Liferay7開發文檔_3.2.3生成PORTLET URL

生成PORTLET URL

回想一下,用戶可以在一個頁面上放置多個portlet。作爲一名開發人員,您不知道會與哪些其他portlet共享一個頁面。這意味着不能像習慣的那樣爲應用程序中的各種功能定義URL。

例如,考慮一個用戶與博客應用程序放在同一頁面上的日曆應用程序。要實現刪除相應應用程序中的日曆事件和博客條目的功能,應用程序開發人員將該del參數追加到URL中,併爲其提供主鍵值,以便應用程序可以查找和刪除日曆事件或博客條目。由於這兩個應用程序讀取此參數,它們的刪除功能會發生衝突

Liferay Portal的解決方案是由系統生成的URL。通過爲每項功能生成一個唯一的URL參數,Liferay Portal允許具有相同或相似功能的多個應用程序和諧共存。不幸的是,爲了保證portlet工作,必須手動添加對它的支持。幸運的是,這樣做非常簡單。

view.jsp,按照以下步驟在您的portlet中啓用系統生成的URL:

  1. 添加這些標籤<%@ include file="/init.jsp" %><aui:button-row>標籤上方:
    <portlet:renderURL var="addEntryURL">
        <portlet:param name="mvcPath" value="/edit_entry.jsp"></portlet:param>
    </portlet:renderURL>
    
  2. <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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章