2012-04-21 122 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>