【问题标题】:Liferay with JSF and FaceletsLiferay 与 JSF 和 Facelets
【发布时间】:2016-10-30 20:45:46
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: jsf liferay-6 facelets


    【解决方案1】:

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

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

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

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

    在 faces-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(portlet 间通信)来更改 JSF Portlet 的视图。 I wrote this tutorial 可以帮助您在 JSF portlet 之间执行 IPC。

    【讨论】:

    • 感谢您的回复。它看起来非常有用。问题是我们将有一个菜单面板,我们将拥有所有菜单。所以侧面板中的链接不应该绑定到 jsf。我想知道是否可以使用友好的网址?
    • 由于您只有一个带有许多 Facelets 页面和许多支持 bean 的 portlet,因此使用友好的 url 不会解决您的问题。事实上,它只会重定向到一个新页面,其中 jsf portlet 的视图将保持不变(在您的 portlet.xml 中的属性 javax.portlet.faces.defaultViewId.view 中指定的默认视图) .
    • 你是对的 Radouane ROUFID。我在同一场战争中创建了几个其他的 portlet,并且它起作用了。
    • 请注意,您没有义务将所有 portlet 放在同一个战争中来执行 IPC。如果出于某些原因,您希望将您的 portlet 分隔在不同的战争中,您可以这样做并通过添加属性 portlet.public.render.parameter.distribution=layout-set来执行 IPC > 进入 portal-ext.properties 文件。
    猜你喜欢
    • 2010-12-28
    • 1970-01-01
    • 2014-07-16
    • 2011-03-28
    • 2010-09-18
    • 2012-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多