【问题标题】:Integrate Jsf application into Liferay将 Jsf 应用程序集成到 Liferay
【发布时间】:2012-04-21 10:03:41
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 需要澄清:您已经开发了一个完整的独立 JSF Web 应用程序,并且希望将它与 Liferay 集成?或者您将在 Liferay 中使用 JSF 开发一个新应用程序?
  • 我已经有了一个完整的jsf web应用,我想把它和liferay集成。
  • 那么我猜你将不得不使用这个链接中提到的 iframe 技术:liferay.com/community/wiki/-/wiki/Main/…。但是您将无法使用 liferay 的角色和权限系统。
  • 但是,如果您真的热衷于使用 Lifray 的角色和权限,那么您可能必须在 liferay 中创建一个新的 JSF portlet 并迁移您的代码以适应 portlet 环境并在您的 JSP 中使用 Liferay 的权限系统,对于这个,关于如何在 liferay 中开发 JSF portlet,您已经有了两个很好的答案。恐怕你不能使用你要开发的 JSF portlet 中的 JSF web 应用程序的代码。
  • 感谢 Prakash 的帮助指导。现在我可以做出正确的决定。我会将我的 jsf 代码迁移到 jsf-portlet 中。您可以使用您的 cmets 作为答案,因此您将获得积分。

标签: jsf-2 liferay liferay-6


【解决方案1】:

正如 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;
}

【讨论】:

  • 是的,但我实际上是在尝试进入我的 jsf 应用程序,它不是 jsf-portlet,它只是单独的 jsf(web) 应用程序。在这种情况下,我如何传递生命登录用户的用户 ID到我的 jsf 应用程序。?
  • 如果您在门户页面上通过 iframe 使用独立应用程序,我认为不可能做您想做的事情
  • 您必须将独立应用程序迁移到 portlet。这并不难,你可以重复使用你的豆子和面孔。 Portlet 只是您应用程序的新起点。尝试 Miha 链接中的示例。
【解决方案2】:

安装 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

【讨论】:

  • 是的,在 Liferay 中有一种方法可以创建 jsf-2 portlet。那么你的意思是我需要将现有的 jsf 应用程序作为 portlet 来适应吗?
  • 是的,所以您将应用程序调整为 portlet。
  • 很好,你能给我提供任何简单的 jsf portlet 示例吗,这样我就可以将我现有的项目调整到其中。
  • 您可以使用一组 Eclipse 插件的 Liferay IDE 创建新的简单 JSF-Portlet。如果您不想使用 Liferay IDE,您可以使用 liferay sdk 创建相同的 jsf-portlet,即批处理 ant-scripts。批处理命令为:“create MyJSFTest MyJSFTestPortlet jsf”
  • 是的,你是对的,但是如果我想单独使用我的 jsf 应用程序并且需要从 liferay 调用(比如从 view.jsp),我该​​怎么做呢?是否可以通过 liferay 调用单独的 jsf 应用程序?(这正是我想做的)(我也更新了我的问题)
【解决方案3】:

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

然后选择 JSF2.x 和 PrimeFaces

您最终应该得到如下结果:

您可以通过在 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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多