使用Liferay的SDK创建一个简单的Portlet,此Portlet不包括业务逻辑、不包括数据库,只有简单的页面展现,用以说明Portlet的开发过程。
一、创建Liferay工程
1、打开Liferay IDE,File-->New-->Liferay Project
2、为Liferay工程取名为ExamplePortletPro,点击完成。或者点击下一步,默认选择Liferay MVC。
创建成功后,Liferay工程的项目结构为:
补充说明:
Portlet:这个是一般做Liferay开发选择的项目,一般说Liferay插件工程,通常都是指的Portlet工程。他的结构和内容和普通的WEB工程区别不大。
以下的选项,会在后续文档详细介绍和使用。
Hook:Liferay的Hook是什么东西呢?这个单词中文可以翻译成钩子。是用于重写或覆盖Liferay的一些默认方法或页面。为开发提供了一种在不直修改Liferay核心源码的情况下修改Liferay核心功能的方法。
Ext:扩展工程的开发方法是Liferay早期版本推荐的开发方法,在6.x版本之后对ext开发模式逐渐不再推荐,主要使用Portlet的开发方法。扩展开发可以继承Liferay的Portal的大部分接口方法,而Portlet里面可以使用的接口方法均是Services包里面暴露的API。但是和Liferay的核心工程耦合太大,当Liferay的版本升级时对Ext工程的影响太大,基本需要重新修改。所以一般不推荐使用Ext模式。
Layout:布局模板,Liferay的布局是可以定制的,如一个页面中是两栏式还是三栏式,每个栏里面又有几行等等,可以使用此模式进行快速开发。
Theme:主题包。Liferay IDE提供的可以帮助开发人员、设计人员快速开发Liferay主题包的功能,通过此模式提供的向导工具等,为主题包的开发大大的提供了便利。
二、建立Portlet
在创建Liferay 项目后,这里以添加一个portlet为例子:
1、 打开Liferay IDE,File-->New-->Liferay Portlet
创建一个叫做ExampletTestPortlet的portlet。
2、 点击next,勾选Portlet对应方法。
勾选 Create JSP files 会自动生成对应页面。
3、 在下一步设置界面上,选择Allow multiple instances选择可以让portlet实例化(同一页面多个相同portlet) ,Display Category 设置该portlet显示在哪个分类中。
4、 点击完成后会自动生成对应的代码。
对应的项目结构如下:
三、Portlet部署
Liferay的开发大量依赖Ant(也可以使用maven),在Liferay的开过程中,编译、代码生成、打包、部署等都是基于Ant完成的。
1、Liferay 的IDE在Liferay的portlet开发模式下,ant面板默认是可见的,如果找不到可以通过Window-->Show View-->Ant(如果没有可以在other里面找到)
2、在ant页板里面,点击Add-buildfiles将Build.xml文件添加进来。
3、点击ExamplePortletPro-portlet前面的小三角,在出现的下拉菜单里面,双击deploy,等待Liferay完成部署操作。
4、把该文件放到Liferay实例的deploy目录里
5、启动Tomcat。此portlet工程会自动部署。
6、打开http://localhost:8080/,登录系统。点击左上角的添加-->更多-->示例,在这里面可以看到我们刚建立的ExampletTestPortlet,点击添加,可以将此portlet添加到页面上。
四、Portlet工程结构
一个Portlet工程的大概结构如下:
1、src:这里存储Java相关文件包,后面会看到还有一个services包。
2、web.xml:此web.xml和普通的web工程的web.xml文件一样。
3、build.xml,此文件为ant的构建文件,一般不需要修改继承自SDK。
4、Liferay-plugin-package.properties,此文件为包工程的元数据信息文件,一般开发不需要关注。
5、portlet.xml: JSR-286相关的一些配置,它作为portlet的部署描述文件,在这里定义的信息为portlet的名称、初始化参数、模式类型、portlet的相关信息、权限等。在此文件里面我们可以看到view-template对应的的是/view.jsp,当我们在Liferay里面添加此portlet后,看到的页面内容就是view.jsp里面的内容。下面的security-rol-ref定义的是哪些角色拥有此portlet的权限。
6、Liferay-portlet.xml:文件显示Liferay对JSR-286做了哪些增强,比如配置某个portlet是否是实例化的,所有的Portal容器的portlet.xml文件描述、结构都是一样的。但liferay基于自身平台的需求,又添加了一个Liferay-portlet.xml来扩展portlet的信息。在这里可以看到角色映射,以及Liferay的一些个性化信息,后面有需要的时候详细说明。
7、liferay-display.xml: 文件显示portlet在Add菜单的哪个分类下
说明:
在Liferay里面,portlet的名称一般不要重复,portlet.xml,liferay-portlet.xml,lifray-display.xml这三个文件之间的关联就是通过portlet 名称做标识进行关联。












浙公网安备 33010602011771号