2012-04-21 127 views
0

我開發一個JSF 2.0(含3.2 primefaces)應用程序,我想整合內部的Liferay我的JSF應用程序。我是Liferay的新手,要求應用程序將通過Liferay進入。集成JSF應用程序到Liferay的

這意味着用戶將登錄,這應該通過Liferay進行。然後,我在liferay Liferayhomepage登錄後看到liferay基本視頻。

現在請指導我,那裏面的主頁或登錄後,我應該能看到,我正在開發JSF應用程序,(你可以說我的申請將裏面的Liferay一個portlet)吧?並且應該能夠根據您在Liferay中應用的「角色」進行導航。我怎樣才能做到這一點?

第二個問題是,一旦我有我的JSF aplication內進入,肯定 我需要「用戶id」,這將是獨一無二的,執行插入,並從數據庫中檢索 數據。如何在我的JSF 應用程序中使用它?如果任何人都可以用一個簡單的例子來解釋,這將是 真的有幫助,因爲這是我卡住的地步。請幫助 我出去。

總之是有可能通過 Liferay的調用單獨的JSF應用程序?在這裏,我正在通過liferay進入,因爲liferay提供了「角色」,所以一旦通過liferay登錄,他應該能夠根據角色(如管理員,高級用戶等)進入我的JSF應用程序。(這正是我想要做的)

請讓我知道是否有人需要我的問題更多的澄清。

+0

澄清:你已經有一個完整的獨立的JSF Web應用程序開發,並希望將其與Liferay的整合?或者你將在Liferay中開發一個使用JSF的新應用程序? – 2012-04-24 12:23:47

+0

我已經有了一個完整的jsf web應用程序,我想將它與liferay集成。 – Java 2012-04-25 06:12:01

+0

那我猜你將不得不使用在這個環節提到的iframe技術:http://www.liferay.com/community/wiki/-/wiki/Main/Liferay+Web+Application+Integrator。但是你將無法使用liferay的角色和權限系統。 – 2012-04-25 07:29:33

回答

4

馬克已經提到的,你可以找到JSF portlet的實例(也primefaces)這裏http://www.liferay.com/community/liferay-projects/liferay-faces/demos

內你的JSF的portlet可以獲取用戶對象通過這種方式(包含角色):

public static User getCurrentUser(){ 
    User u = null; 
    FacesContext fc = FacesContext.getCurrentInstance(); 
    ExternalContext externalContext = fc.getExternalContext(); 
    if (externalContext.getUserPrincipal() != null) { 
     Long id = Long.parseLong(externalContext.getUserPrincipal().getName()); 
     try { 
      u = UserLocalServiceUtil.getUserById(id); 
     } 
     catch (Exception ex) { 
      LOG.error(ex.getMessage()); 
     } 
    } 
    return u; 
} 
+0

是的,但我其實是想在進入到我的JSF應用程序是不是JSF的portlet,它只是單獨的JSF(網絡)application.In這種情況下如何我可以將lifery登錄用戶的userid傳遞給我的jsf應用程序嗎? – Java 2012-04-24 08:59:07

+1

如果門戶網站頁面上通過iframe中使用獨立的應用程序,我不認爲這是可以做到你想要什麼 – Misha 2012-04-24 11:08:27

+1

您必須遷移獨立應用的portlet。這並不難,你可以重複使用你的豆子和臉部。 Portlet只是您應用程序的新起點。試試Miha鏈接的例子。 – Mark 2012-04-24 19:11:25

1

安裝Liferay的IDE和它的幫助,您可以創建簡單的JSF-2的Portlet。你發現在portletfaces頁一些例子 http://www.portletfaces.org/projects/portletfaces-bridge/liferay-ide

僅供參考portletfaces現在Liferay的-面孔:http://www.portletfaces.org/projects/liferayfaces

+0

是的,在liferay中有一種方法可以創建jsf-2 portlet。所以,您是否認爲我需要將現有的jsf應用程序作爲portlet? – Java 2012-04-23 05:55:37

+0

是的,所以你調整了應用程序到portlet。 – Mark 2012-04-23 07:05:35

+0

它很好,你能否給我提供任何簡單的jsf portlet例子,所以我可以把我現有的項目調整到那個。 – Java 2012-04-23 07:35:41

1

你應該得到的Liferay IDE,並創建一個新的p roject File-> New-> Liferay Project。然後選擇Portlet給項目的名稱和顯示名稱

screenShotOne

然後選擇JSF2.x和PrimeFaces

ScreenShot2

你應該像結束: enter image description here

通過在liferay-display.xml,liferay-portlet.xml和portlet.xml中添加信息來添加Portlet。門戶。XML將JSF頁面映射到portlet視圖需要

<init-param> 
    <name>javax.portlet.faces.defaultViewId.view</name> 
    <value>/views/view.xhtml</value> 
    </init-param>