开发Portlet第一步:如何基于Crystal开发静态Portlet?
当团队需要基于Crystal开发Porltet时,分为以下三部:
- 基于Crystal开发静态Portlet
- 基于将静态Portlet修改为基于测试数据的动态Portlet
- 将动态Portlet与动态数据服务联调
那么如何基于Crystal开发静态Portlet呢?
分步指南
1、创建项目
- 准备基于Eclipse的Liferay开发环境,复制静态Portlet开发项目static-development-portlet,具体目录结构如下:
模版项目中包含4个Portlet,便于初始化,具体初始化项目如下:
- 修改项目名称信息:
/static-development-portlet/pom.xml文件:修改Group Id、Artifact Id和Version信息为项目指定值
/static-development-portlet/src/main/webapp/WEB-INF/liferay-plugin-package.properties文件:如下图修改相应信息为项目指定值
/static-development-portlet/src/main/webapp/WEB-INF/liferay-plugin-package.xml文件:如下图修改相应信息为项目指定值
2、修改(增加、删除)Portlet信息:
/static-development-portlet/src/main/webapp/WEB-INF/portlet.xml文件:
每个<portlet></portlet>标签对应一个portlet定义,模版文件中包含四个Portlet定义,可根据实际需要修改或增删。
portlet-name信息必须英文、全局唯一,根据项目指定,一般结构为【项目代码】-【porlet代码】,多单词间用横杠“-”隔开。
display-name用于管理过程中区分哪个Portlet,titile用于显示Portlet边框上的标题文字,取简洁明了的文字。
portletSetupShowBorders是默认是否显示边框,fase为不显示。
以下示例代码中,除portlet-name和中文内容外,可不改。
<portlet>
<portlet-name>static-user-list</portlet-name>
<display-name>用户列表(静态)</display-name>
<portlet-class>com.gsoft.crystal.portlet.CrystalDispatcherPortlet</portlet-class>
<expiration-cache>0</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>view</portlet-mode>
</supports>
<resource-bundle>content.Language</resource-bundle>
<portlet-info>
<title>用户管理(静态)</title>
<short-title>用户管理(静态)</short-title>
<keywords>用户管理(静态)</keywords>
</portlet-info>
<portlet-preferences>
<preference>
<name>portletSetupShowBorders</name>
<value>false</value>
</preference>
</portlet-preferences>
<security-role-ref>
<role-name>administrator</role-name>
</security-role-ref>
</portlet>
/static-development-portlet/src/main/webapp/WEB-INF/liferay-portlet.xml文件:
每个<portlet></portlet>标签对应一个portlet定义,模版文件中包含四个Portlet定义,可根据实际需要修改或增删。
portlet-name必须与portlet.xml文件中的portlet-name一一对应。
其余为加载图标、CSS、JS文件的路径,确保与具体的文件路径保持一致。
<portlet>
<portlet-name>static-user-list</portlet-name>
<icon>/images/user-list.png</icon>
<header-portlet-css>/css/bootstrap-multiselect.css</header-portlet-css>
<header-portlet-css>/css/user-list.css</header-portlet-css>
<footer-portlet-javascript>/js/jquery-2.1.1.js</footer-portlet-javascript>
<footer-portlet-javascript>/js/bootstrap.min.js</footer-portlet-javascript>
<footer-portlet-javascript>/js/bootstrap-multiselect.js</footer-portlet-javascript>
<footer-portlet-javascript>/js/user-list.js</footer-portlet-javascript>
</portlet>
/static-development-portlet/src/main/webapp/WEB-INF/liferay-display.xml文件:
如下图,将定义的portlet添加到static-dev分类中。
在/static-development-portlet/src/main/webapp/WEB-INF/spring目录下修改或增删****-portlet.xml文件
其中****对应portlet-name属性的值(去除横杠,如portlet-name为test-list,则文件名为testlist-portlet.xml)。
修改对应的包路径(必须为com.gsoft.portlet,的子包,否则可能会出现未知问题)。
修改jsp文件所在目录。
/static-development-portlet/src/main/webapp/WEB-INF/jsp目录下为每个portlet建一个文件夹,与上文件指定的路径一致。
com.gsoft.portlet.demo.application包下创建portlet类,类名不限:
内容如下:
/**
* @author shencq
*
*/
@Controller
public class ApplicationManagementPortlet extends AbstractCrystalPortlet {
@RequestMapping
public String view(Model model, RenderRequest request) {
return "view";
}
@RequestMapping(params = "action=add")
public String view4add(Model model, @RequestParam String rediract) {
model.addAttribute("rediract", rediract);
return "add";
} @RequestMapping(params = "action=save")
public String save(Model model, @RequestParam String rediract){
model.addAttribute("rediract", rediract);
return "pop_up_success";
}
}
其中,return "****",对应上文指定jsp目录下的jsp文件名,标识跳转到****.jsp文件。
默认执行:
创建静态资源文件和JSP文件:
其中,JSP文件中,除静态代码外,如需请求服务跳转页面或执行js代码,可如下所示:
3、发布portlet
创建Liferay Portal服务器
将portlet项目动到服务器下部署
启动服务即可使用portlet,修改jsp、静态文件等一般会自动更新,如不能自动更新,可手动重新部署portlet。
开发Portlet第一步:如何基于Crystal开发静态Portlet?的更多相关文章
- Android上掌纹识别第一步:基于OpenCV的6种肤色分割 源码和效果图
Android上掌纹识别第一步:基于OpenCV的6种肤色分割 源码和效果图 分类: OpenCV图像处理2013-02-21 21:35 6459人阅读 评论(8) 收藏 举报 原文链接 ht ...
- java微信开发API第一步 服务器接入
I如何接入服务器,下面就为大家进行介绍 一.说明 * 本示例根据微信开发文档:http://mp.weixin.qq.com/wiki/home/index.html最新版(4/3/2016 5:34 ...
- Go语言开发的第一步,安装开发环境编写第一个Go程序
关于go就不介绍了,google自己的语言.其它的百科,最近比较郁闷,处于纠结状态,不想说话,真心不想说话. 开发工具安装: 安装包下载: http://code.google.com/p/go/do ...
- android unity3d开发学习第一步
1:下载unitysetup 开发环境 http://unity3d.com/unity/download/download-windows 2:下载三维制作软件 制作我们需要的场景 http://u ...
- Linux——搭建PHP开发环境第一步:apache
原文链接:http://www.2cto.com/os/201511/450258.html ##### Apache 编译安装[root@localhost ~]# yum install gcc ...
- 1、Dreamweaver+php开发网站第一步
1.首先在appserv目录下的www中建立一个网站文件夹,例如test 2.在Dreamweaver中的站点下新建站点进行配置,其中站点选项和服务器选项都要配置. 3.然后在Dreamweaver中 ...
- 开发Portlet第二步:如何将Crystal静态Portlet转变成基于测试数据的动态Portlet?
当基于Crystal的静态Portlet开发完成后,在与后台服务联调前,还需要将Portlet转换成基于测试数据的动态Portlet.具体步骤如下: 分步指南 复制Portlet项目,并修改相关的po ...
- 基于.NetCore开发博客项目 StarBlog - (15) 生成随机尺寸图片
系列文章 基于.NetCore开发博客项目 StarBlog - (1) 为什么需要自己写一个博客? 基于.NetCore开发博客项目 StarBlog - (2) 环境准备和创建项目 基于.NetC ...
- 基于uFUN开发板和扩展板的联网校准时钟
项目概述 上周在uFUN试用群里看到管理员说试用活动快结束了,要抓紧完成评测总结,看大家的评测总结也都写了,我也不能落后啊!正好最近做的扩展板到手了,于是赶紧进行调试,做了一个不用校准的时钟,时钟这种 ...
随机推荐
- SqlDateTime 溢出。
SqlDateTime 溢出.必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间 解决方法:不要怀疑自己的判断就是数据库字段里的datatime ...
- uva 489.Hangman Judge 解题报告
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
- BestCoder27 1001.Jump and Jump... (hdu 5162) 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5162 题目意思:有 n 个 kid,每个 kid 有三个成绩 a, b, c.选最大的一个成绩作为这个 ...
- 自定义循环滑动的viewpager
今天和大家分享一下如何定制一个可以循环滑动的viewpager.其实今天更重要的提供一种组件化思想,当然你可以理解为面向对象思想. 吐槽一下网上流行的实现方式吧(为了方便说明,下文称之为方式A),方式 ...
- 【leetcode】 Unique Binary Search Trees (middle)☆
Find the contiguous subarray within an array (containing at least one number) which has the largest ...
- 【QT】视频播放
在网上没找到,在书上也没有.后来突然想直接在官网的类里面找Video 居然就有了. 把http://qt-project.org/doc/qt-5/qmediaplayer.html的例子补充完整后就 ...
- 【C语言】结构体
不能定义 struct Node { struct Node a; int b; } 这样的结构,因为为了建立Node 需要 建立一个新的Node a, 可为了建立Node a, 还需要再建立Node ...
- LightOJ1336 Sigma Function(约数和为偶数的个数)
Sigma Function Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%lld & %llu Submit ...
- September 3rd 2016 Week 36th Saturday
Calculation never made a hero. 举棋不定,难以称雄. We change. We have to. Or we spend the rest of our lives f ...
- 不同版本CUDA编程的问题
1 无法装上CUDA的toolkit 卸载所有的NVIDIA相关的app,包括NVIDIA的显卡驱动,然后重装. 2之前的文件打不开,one or more projects in the solut ...