将Jsf应用程序集成到Liferay中

Jav*_*ava 0 liferay jsf-2 liferay-6

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

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

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

第二个问题是,一旦我进入我的JSF应用程序,我肯定需要'userId',它将是唯一的,用于从数据库执行数据的插入和检索.如何在我的JSF应用程序中使用它?如果任何人都可以用一个简单的例子来解释,那将会非常有用,因为这是我被困的地方.请帮帮我.

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

如果有人需要更多关于我的问题的澄清,请告诉我.

Mis*_*sha 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;
}
Run Code Online (Sandbox Code Playgroud)