最大化的portlet,自定义max.tpl

时间:2015-10-14 09:35:08

标签: jsf jsf-2 liferay portlet

我正在使用一个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”。有没有办法从我的方法传递自定义布局?有可能吗?

1 个答案:

答案 0 :(得分:0)

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

在JSP或facelets中,您可能使用类似于此代码段的内容:

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

<liferay-ui:breadcrumb/>

让您的portlet可配置

一个简单的实现是使您的portlet可配置。管理员将能够配置是否显示每个portlet实例的面包屑。有关详细信息,请参阅Implementing Configurable Portlet Preferences

或...使用嵌套Portlet Portlet

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

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

我个人非常喜欢嵌套Portlet Portlet - 但仅限于很小一部分问题。通常我更喜欢其他解决方案,例如使portlet可配置。

,然后...

根据您的要求 - 您可能根本不需要嵌套。仅仅将portlet放在另一个上面/旁边是不够的?