【发布时间】: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 中创建面包屑来解决它。这不是满足我们需求的最佳解决方案。