2010-06-25 96 views
1

我是新來的portlet,並對CMS門戶中的工作方式有疑問(我們正在評估Liferay作爲CMS)。爲Liferay CMS/Portal編寫portlet

比方說,我想創建一個portlet來顯示特定課程所需的所有書籍。您無需登錄即可查看,它將顯示在公共網站上。

在CMS中,我將爲ENGL-100和HIST-300創建兩個頁面。

我想在每個頁面上添加相同的portlet。我期望將該portlet部署爲一個war文件。

我將如何告訴每個頁面上的portlet要查找哪個課程?不要告訴我,我必須更改每個主題的portlet.xml文件。 Portlet是否可以訪問URL參數?

回答

0

是的,portlet可以處理URL參數。這就是你要實現你想要的方式。根據您訪問的頁面,您只需將課程主題作爲URL參數傳遞給portlet,然後讓portlet爲您處理。當然,你必須去數據庫尋找正確的路線等,以返回正確的數據。

+0

當我將portlet放在頁面上時,無法設置變量嗎?將兩個相同的portlet放在同一個頁面上是不可能的,每個portlet都引用不同的過程? – 2010-06-25 18:10:13

+0

您可以將2個portlet實例放在同一頁面上。只需在配置Portlet的屬性頁面時更改URL參數。爲每個portlet傳遞不同的courseId,以便它可以從數據庫中獲取正確的課程數據。 – 2010-06-25 18:46:59

+0

在JSR portets中,您*不應該*解析URL參數,請參閱下面的更多詳細信息 – jayshao 2010-07-03 02:22:33

4

的Portlet 應該依靠URL參數直接 - 這個確切原因 - 你可能具有相同的頁面上的多個實例,並且不想讓他們碰撞(因爲它們都會看到渲染過程中的參數,可以雖然只有一個會得到Action)

在Liferay中,您可以放下2個portlet,如果您通過EDIT或Liferay Config視圖使用Preferences,那麼prefs將分別作用於呈現初始狀態。容器將處理保持2個portlet直。