将Jsf应用程序集成到Liferay中

时间:2012-04-21 10:03:42

标签: jsf-2 liferay liferay-6

我正在开发一个JSF 2.0(带有primefaces 3.2)应用程序,我想在Liferay中集成我的JSF应用程序。我是Liferay的新手,要求申请将通过Liferay进入。

这意味着用户将登录,这应该通过Liferay进行。然后正如我在liferay'Liferayhomepage'登录后在liferay基本视频中看到的那样。

现在请指导我,在该主页内或登录后我应该能够看到我正在开发的JSF应用程序(你可以说我的应用程序将是liferay中的一个portlet)对吗?并且应该能够根据您在Liferay中应用的“角色”进行导航。我怎么能这样做?

  

第二个问题是,一旦我进入我的JSF应用程序,肯定   我将需要'userId',这将是唯一的,以执行插入和   从数据库中检索数据。我怎样才能在JSF中使用它   的applcation?如果任何人都可以用一个简单的例子来解释,那就是   真有帮助,因为这是我被卡住的地方。请帮忙   我出去了。

     

简而言之,可以通过调用单独的JSF应用程序   Liferay的?在这里我通过liferay进入,因为liferay提供了“角色”,因此一旦通过liferay登录,他应该能够根据角色(如管理员,高级用户等)进入我的JSF应用程序。(这正是我想这样做)

如果有人需要对我的问题进行更多澄清,请告诉我。

3 个答案:

答案 0 :(得分:5)

正如Mark已经提到过的,你可以在这里找到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;
}

答案 1 :(得分:1)

安装Liferay IDE及其帮助您创建简单的JSF-2 Portlet。您在portletfaces页面上找到了一些示例 http://www.portletfaces.org/projects/portletfaces-bridge/liferay-ide

fyi portlet-faces现在是liferay-faces:http://www.portletfaces.org/projects/liferayfaces

答案 2 :(得分:1)

您应该获得Liferay IDE并创建一个新项目File-> New-> Liferay Project。然后选择Portlet为项目命名并显示名称

screenShotOne

然后选择JSF2.x和PrimeFaces

ScreenShot2

你应该得到类似的东西: enter image description here

通过在liferay-display.xml,liferay-portlet.xml和portlet.xml中添加信息来添加portlet。 portlet.xml将jsf页面映射到portlet视图

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