带有 JSF 和 Facelets 的 Liferay

Liferay with JSF and Facelets

在一个项目中,我们将 Liferay 与 JSF 和 Facelets 一起用于视图。

我们只想使用一个带有许多 Facelets 页面和许多支持 bean 的 portlet。

为此,我们考虑在 portlet 之外提供一个菜单栏(现在仅在 portlet 中,在顶部),我们需要从那里根据用户在菜单项上的选择显示适当的页面。

我不确定如何从 Facelet 显示适当的页面,因为每次我尝试它都会显示第一页。

- 菜单栏和要重定向到的页面在同一个 portlet 中

如果菜单栏位于 JSF portlet 中,您只需在 faces-config.xml 文件中定义 JSF 导航规则即可导航到新视图。

例如,考虑 home.xhtml 是主 portlet 视图(默认 portlet 视图)并且 doAction()是 managedBean 中处理菜单点击的方法。

public String doAction() {
   return "go_to_page";
}

在脸上-config.xml

<navigation-rule>
    <from-view-id>home.xhtml</from-view-id>
    <navigation-case>
        <from-outcome>go_to_page</from-outcome>
        <to-view-id>page.xhtml</to-view-id>
    </navigation-case>
</navigation-rule>

- 菜单栏和要重定向到的页面在同一个 portlet

但是如果菜单在另一个 portlet 中并且您不想重定向,则必须使用 IPC(inter portlet communication)来更改 JSF Portlet 的视图。 I wrote this tutorial 可以帮助您在 JSF portlet 之间执行 IPC。