2015-10-14 37 views
0

我工作的一个JSF的portlet,至极使用最大化的portlet,定制max.tpl

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(); 
    } 
} 

问题是,我需要使用定制的 “max.tpl” 对于此portlet只。有没有办法从我的方法传递自定义布局?它有可能以任何方式?

+0

我不是Liferay布局方面的专家,但您可以使用[LayoutLocalServiceUtil](https://docs.liferay.com/portal/6.2/javadocs/com/liferay/portal/)以编程方式更改布局服务/ LayoutLocalServiceUtil.html)。此外,[本论坛帖子](https://www.liferay.com/community/forums//message_boards/message/5181568)解释了如何更改所有portlet的布局,但我不认为这就是你想。 – stiemannkj1

+1

为什么您需要portlet特定的布局模板?你能描述一下这个要求吗?布局模板是一个强大的功能,但它们很少用于定制单个portlet。 –

+1

@TomášPiňos我需要一个带有指定功能(这种情况下是面包屑)的“max.tpl”,而其他的没有(但是具有指定功能的功能可以被其他门户使用)。现在通过在portlet中创建面包屑来解决它。这不是我们需求的最佳解决方案。 – DannyThunder

回答

0

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

在你的JSP或小面,你可能使用类似这个片段的东西:

<%@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放置在另一个上面/旁边不就足够了吗?