【问题标题】:Maximized portlet, custom max.tpl最大化的 portlet,自定义 max.tpl
【发布时间】:2016-01-12 07:51:28
【问题描述】:

我正在开发一个 JSF portlet,它使用

javax.portlet.WindowState.MAXIMIZED

表格发布后。

方法:

private void setPortletMaximized(boolean maximized) {
    
    FacesContext facesContext = FacesContext.getCurrentInstance();
    javax.faces.context.ExternalContext externalContext = facesContext.getExternalContext();
    javax.portlet.PortletResponse portletResponse = (javax.portlet.PortletResponse)externalContext.getResponse();
    javax.portlet.ActionResponse actionResponse = (javax.portlet.ActionResponse)portletResponse;
    try {
        if(maximized){
            actionResponse.setWindowState(javax.portlet.WindowState.MAXIMIZED);
        }else {
            actionResponse.setWindowState(javax.portlet.WindowState.NORMAL);
        }
        
    } catch (WindowStateException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

问题是我只需要为此 portlet 使用自定义的“max.tpl”。有没有办法从我的方法中传递自定义布局?有没有可能?

【问题讨论】:

  • 我不是 Liferay 布局方面的专家,但您可以使用 LayoutLocalServiceUtil 以编程方式更改布局。此外,this forum post 解释了如何更改所有 portlet 的布局,但我认为这不是您想要的。
  • 为什么需要 portlet 特定的布局模板?你能描述一下需求吗?布局模板是一项强大的功能,但它们很少用于自定义单个 portlet。
  • @TomášPiňos 我需要一个具有特定功能的“max.tpl”(本例中为面包屑),而其他没有(但具有特定功能的也可以被其他 portlet 使用)。现在通过在 portlet 中创建面包屑来解决它。这不是满足我们需求的最佳解决方案。

标签: jsf jsf-2 liferay portlet


【解决方案1】:

因此,您只想为您的 portlet 的某些实例显示面包屑。对吧?

在您的 JSP 或 facelets 中,您可能会使用类似于以下 sn-p 的东西:

<%@taglib prefix="liferay-ui" uri="http://liferay.com/tld/ui" %>

<liferay-ui:breadcrumb/>

使您的 portlet 可配置

一个简单的实现是使您的portlet 可配置。管理员将能够配置是否显示每个 portlet 实例的面包屑。详情请见Implementing Configurable Portlet Preferences

或者...使用嵌套的 Portlets Portlet

您也可以使用Nested Portlets Portlet 来实现可变性。将嵌套的 Portlets Portlet 放置到页面中,使用合适的布局模板(1 列、2 列……)并将 Breadcrumbs Portlet 放置在您需要的 Portlet 上方/旁边。

 ----------------------
| Breadcrumbs portlet  |
|----------------------|
| Your portlet         |
 ----------------------

就我个人而言,我非常喜欢嵌套的 Portlets Portlet - 但仅适用于一小部分问题。通常我更喜欢其他解决方案,比如让您的 portlet 可配置。

那么……

根据您的要求 - 也许您根本不需要嵌套。仅将 portlet 放在一个上方/旁边还不够吗?

【讨论】:

    猜你喜欢
    • 2014-02-27
    • 1970-01-01
    • 1970-01-01
    • 2013-04-17
    • 2012-04-26
    • 2013-06-17
    • 2013-02-23
    • 2023-03-26
    • 2016-03-04
    相关资源
    最近更新 更多