开发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文件。

默认执行:

方法,如需请求其他方法,可在请求参数中带参数,如action=add,即可执行以下方法:

创建静态资源文件和JSP文件:

其中,JSP文件中,除静态代码外,如需请求服务跳转页面或执行js代码,可如下所示:

3、发布portlet

创建Liferay Portal服务器

将portlet项目动到服务器下部署

启动服务即可使用portlet,修改jsp、静态文件等一般会自动更新,如不能自动更新,可手动重新部署portlet。

时间: 2024-10-14 14:39:52

开发Portlet第一步:如何基于Crystal开发静态Portlet?的相关文章

BEGINNING SHAREPOINT&#174; 2013 DEVELOPMENT 第3章节--SharePoint 2013 开发人员工具 SharePoint中基于Web开发

BEGINNING SHAREPOINT? 2013 DEVELOPMENT 第3章节--SharePoint 2013 开发人员工具 SharePoint中基于Web开发 之前提到过,定义SharePoint开发有多种方法.作为高级用户,你可能使用更多原生SharePoint功能在基于Web环境做开发.高级用户典型地在SharePoint站点有逐步上升的权限,并且能够完成以下任务: 创建和管理网站集与网站权限. 配置站点主题. 添加Apps到站点. 为网站中使用创建并部署多媒体. 配置和自定义

Linux——搭建PHP开发环境第一步:mysql

原文链接:http://www.jb51.net/article/83647.htm 1.第一步就是看linu是否安装了mysql,经过rpm -qa|grep mysql查看到centos下安装了mysql5.1,那就开始卸载咯 2.接下来就是卸载mysql5.1了,命令:rpm -e mysql-libs --nodeps 3.yum中之后mysql5.1,安装还是5.1,现在就要去增加一个新的repo rpm -Uvh http://mirror.steadfast.net/epel/6/

ionic开发:第一步

1.下载安装node.js 2.输入命令行:npm install -g cordova ionic 3.输入命令行:ionic start myApp blank ok,这样会创建一个ionic的myApp项目. 这样构建的ionic project结构是很清晰的. cd myApp目录下 通过 ionic serve 命令启动 会看到一个空白的页面,那怎么添加一些UI呢?先来看看ionic的组成部分: 主要包括三个部分: CSS框架 - 提供原生App质感的CSS样式模拟.ionic这部分的

Linux——搭建PHP开发环境第一步:apache

原文链接:http://www.2cto.com/os/201511/450258.html ##### Apache 编译安装[[email protected] ~]# yum install gcc gcc-c++ make wget [[email protected] ~]# yum install zlib-devel openssl-devel [[email protected] ~]# yum install -y perl perl-devel 1) apr [[email 

Linux——搭建PHP开发环境第一步:PHP

原文链接:http://www.2cto.com/os/201511/450258.html ##### PHP 编译安装 #### [[email protected] ~]# yum install libxml2-devel curl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel net-snmp net-snmp-devel [[email protected] src]# wget htt

开发Portlet第二步:如何将Crystal静态Portlet转变成基于测试数据的动态Portlet?

当基于Crystal的静态Portlet开发完成后,在与后台服务联调前,还需要将Portlet转换成基于测试数据的动态Portlet.具体步骤如下: 分步指南 复制Portlet项目,并修改相关的pom.xml.src/main/webapp/WEB-INF/liferay-plugin-package.xml.src/main/webapp/WEB-INF/liferay-plugin-package.properties文件中的Atifact-ID.module-id等信息,区别原静态Por

微信开发学习总结(一)微信开发环境搭建

目前移动开发处于比较火的的趋势,很多的开发者都跃跃欲试,目前移动App开发领域主要分为以下几种类型 我在平时的工作中接触得比较多的就是基于Android的Native App开发和基于微信公众号的Light App开发,今天就来带领大家快速进入微信公众号的开发领域. 一.微信开发环境搭建 工欲善其事,必先利其器.要做微信公众号开发,那么要先准备好两样必不可少的东西: 1.要有一个用来测试的公众号. 2.用来调式代码的开发环境. 1.1.注册测试公众号 微信公众号分为服务号.订阅号.企业号,订阅号

微信开发学习总结(一)——微信开发环境搭建(转)

目前移动开发处于比较火的的趋势,很多的开发者都跃跃欲试,目前移动App开发领域主要分为以下几种类型 我在平时的工作中接触得比较多的就是基于Android的Native App开发和基于微信公众号的Light App开发,今天就来带领大家快速进入微信公众号的开发领域. 一.微信开发环境搭建 工欲善其事,必先利其器.要做微信公众号开发,那么要先准备好两样必不可少的东西: 1.要有一个用来测试的公众号. 2.用来调式代码的开发环境. 1.1.注册测试公众号 微信公众号分为服务号.订阅号.企业号,订阅号

微信开发学习总结(一)——微信开发环境搭建

目前移动开发处于比较火的的趋势,很多的开发者都跃跃欲试,目前移动App开发领域主要分为以下几种类型 我在平时的工作中接触得比较多的就是基于Android的Native App开发和基于微信公众号的Light App开发,今天就来带领大家快速进入微信公众号的开发领域. 一.微信开发环境搭建 工欲善其事,必先利其器.要做微信公众号开发,那么要先准备好两样必不可少的东西: 1.要有一个用来测试的公众号. 2.用来调式代码的开发环境. 1.1.注册测试公众号 微信公众号分为服务号.订阅号.企业号,订阅号