在默认的情况下,一个portlet在一个页面上只能有一个,如果需要一个页面上有多个相同的portlet的话就需要对portlet进行实例化。实例化以后,Liferay会为每一个实例化的portlet分配一个 instance id用来区分相同功能的portlet。一个页面里的多个相同的portlet的instance id 不同,同样不同页面的相同的portlet的instance id也不相同。这样就可以开发功能相同,内容不同的实现。
具体配置如下:
添加instanceable属性配置;默认情况下instanceable为false,属性顺序参照liferay-portlet-app_4_4_0.dtd文件。
liferay-portlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE liferay-portlet-app PUBLIC "-//Liferay//DTD Portlet Application 4.4.0//EN" "http://www.liferay.com/dtd/liferay-portlet-app_4_4_0.dtd">
<liferay-portlet-app>
<portlet>
<portlet-name>LinkManager</portlet-name>
<icon>/img/icon.png</icon>
<struts-path>library</struts-path>
<restore-current-view>false</restore-current-view>
<instanceable>true</instanceable>
<css-class-wrapper>portlet-library</css-class-wrapper>
</portlet>
<role-mapper>
<role-name>user</role-name>
<role-link>User</role-link>
</role-mapper>
</liferay-portlet-app>
每一个属性都是在com.liferay.portal.model.impl.PortletImpl中对应。
配置完成以后在代码中通过:
ThemeDisplay themeDisplay = (ThemeDisplay) renderRequest.getAttribute(WebKeys.THEME_DISPLAY);
PortletDisplay portletDisplay = themeDisplay.getPortletDisplay();
Portlet portlet = PortletLocalServiceUtil.getPortletById(themeDisplay.getCompanyId(), portletDisplay.getId());
String instanceId = portlet.getInstanceId();
获得instance id。默认情况下,没有实例化的portlet取出来的instance id 为null。
分享到:
相关推荐
在IT领域,特别是企业级应用开发中,Liferay作为一个强大的企业门户平台,提供了丰富的功能和服务,其中Liferay Portlet的开发是构建定制化企业应用的关键技术之一。本文将基于提供的文件信息,深入解析Liferay ...
这个描述简短地指出了这是一个演示Liferay Portlet功能的实例。它可能包括创建用户界面、处理HTTP请求、与后端服务交互等功能。开发者可以通过分析和运行这个示例,学习如何在Liferay平台上构建动态、自定义化的应用...
例如,可以指定Portlet的图标、是否可实例化、CSS和JavaScript资源等。 ```xml <!DOCTYPE liferay-portlet-app PUBLIC "-//Liferay//DTD Portlet Application 6.1.0//EN" ...
liferay-portlet.xml文件则更专注于Liferay特定的配置,例如默认用户组、portlet是否支持多个实例、portlet的显示设置以及权限控制。它允许开发者指定portlet在Liferay环境中的具体行为和可见性。 liferay-display....
在这个实例中,“Liferay Soy Portlet可视化数据”意味着我们将探讨如何利用Soy Portlet从web service获取数据并将其以可视化方式呈现。Web service通常是一种基于HTTP协议的API,可以跨网络提供服务,使不同系统间...
12. **Portlet实例分析**:通过实际示例,加深对portlet开发的理解,包括如何创建一个简单的Hello World portlet。 通过阅读《Liferay Portlet Development Guide 4.3》,开发者不仅可以学会如何开发portlet,还能...
9. **国际化**:Liferay支持多语言,开发者需要处理i18n资源文件,确保portlet内容能在不同语言环境下正常显示。 在学习这些实例时,你应该着重理解每个部分的作用,以及它们之间如何协同工作。同时,通过调试和...
在这个"Portlet入门实例for Liferay"中,我们将深入探讨Portlet的基本概念、开发流程以及在Liferay中的应用。 1. **Portlet基本概念**: - Portlet是一种轻量级的Web组件,它可以嵌入到门户页面中,提供特定的功能...
3. **[portlet-name].portlet.pdf**:这可能是一个具体的portlet开发实例,包含portlet的详细设计、实现和配置信息。Portlet的开发涉及XML配置(如portlet.xml)、JSP(用于视图渲染)、Java后端服务(处理请求和...
Portlet 生命周期包括五个阶段:初始化、实例化、渲染、销毁和异常处理。每个阶段都有其特定的任务和责任。 Liferay Portal 工作原理 Liferay Portal 的工作原理主要包括 portlet 样式、窗口状态、portal 页面和...
portlet配置通常在portlet部署后通过portlet实例进行。 开发Liferay应用时,需要熟悉Java和JSF(JavaServer Faces)、Portlet API、MVCPortlet等技术。Liferay提供了Service Builder工具,帮助开发者自定义服务,...
在Liferay控制台中,你可以在“布局”部分添加新的portlet实例,将自定义登录界面添加到门户的合适位置。测试登录功能,确保一切按预期工作。 在Liferay 7.0中自定义登录实例,不仅可以改变登录界面的外观,还可以...
- **测试 Liferay 服务器**:IDE 允许开发者配置和管理多个 Liferay 服务器实例,方便进行本地测试和调试。 - **生成新的 Liferay 项目**:通过内置的向导,开发者可以快速创建 Portlet、主题或其他类型的 Liferay ...
liferay-portlet.xml则定义了Portlet的默认用户组、默认模板和多实例支持。liferay-display.xml则用于指定Portlet的分类,以便于Liferay的权限管理和用户界面展示。开发者可以选择继承Liferay提供的基础Portlet类,...
3. **配置Portlet实例属性**: - 在`liferay-portlet-ext.xml`中,定义Struts的路径(`struts-path`)以及是否使用默认模板(`use-default-template`)。Struts-path应与portlet配置中的`view-action`相对路径匹配...
在本文中,我们将深入探讨如何在Eclipse环境中进行Liferay的扩展模式开发。Liferay是一个开源的企业级门户平台,提供了两种...通过熟练掌握这种开发模式,开发者能够构建出符合组织需求的强大和个性化的Liferay实例。
在liferay-plugin.xml中声明portlet,struts-config.xml定义Action路径和业务逻辑,web.xml设置初始化参数。 4. **Portlet开发**:在Liferay中,Struts Action可以通过实现Liferay的PortletAction接口来适应portlet...
2. **启动Tomcat服务器**: 在Myeclipse中启动配置好的Tomcat服务器,Liferay会自动部署并初始化。 **四、开发环境配置** 1. **创建Liferay Portlet项目**: 使用Myeclipse的Liferay插件(如果安装了)创建一个新的...
在描述中提到的实例——“Liferay开发实战(2):Service Builder生成持久化层,一个简单留言板的例子”,我们可以看到Service Builder如何应用于实际项目中。这个例子中,开发者创建了一个名为“guestbook”的portlet...