【liferay】2、可配置portlet
定义:edit和config模式一般没有使用,对于使用editor和config等模式的portlet,我们可以将他们称为可配置portlet。
我们先新建一个portlet项


添加可配置的控制元素,设置为我们前面添加的类


这里一定要注意,如果class填错了,那么就会报错,报 object is not an instance of declaring class的错误
在action和portlet之间数据共享,我们借助PortletPreferences对象来实现
我们在action中获取设置在这个里面的信息

当执行对应的配置action的时候,设置对应的值进入PortletPreferences中

这个时候,我们写下config页面展示
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%>
<%@ taglib uri="http://liferay.com/tld/portlet" prefix="liferay-portlet" %> <portlet:defineObjects /> <!-- 获取根目录 -->
<%
String rootPath = renderRequest.getContextPath();
String title = "可配置式portlet";
String link = "http://www.baidu.com";
%> <liferay-portlet:actionURL portletConfiguration='true' var='test' /> <!-- 这里action可以是固定的<liferay-portlet:actionURL portletConfiguration="true"/> -->
<form action="${test }" name="<portlet:namespace />fm" id="<portlet:namespace />fm"
method="post">
<ul>
<li><span>标题:</span> <input tabindex="1" type="text"
name="<portlet:namespace />customjspConfig_page_title"
id="<portlet:namespace />customjspConfig_page_title"
value="<%=title%>" /></li>
<li><span>链接地址:</span> <input
id='<portlet:namespace />custom_page_link'
name='<portlet:namespace />customjspConfig_page_link' type="text"
value="<%=link%>" /></li>
<li><input type="button" value="保存设置"
onclick="<portlet:namespace />saveConfig()"></li>
<li>
<input type="submit" value="直接提交" />
</li>
</ul>
</form> <script type="text/javascript"> function <portlet:namespace />saveConfig(){ var from = document.getElementById('<portlet:namespace />fm');
from.submit(); } </script>
最后我们在前台view输出一下我们的结果:
package com.xiaof.test2.portlet; import java.io.IOException; import javax.portlet.PortletException;
import javax.portlet.PortletPreferences;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse; import com.liferay.portal.kernel.util.StringPool;
import com.liferay.util.bridges.mvc.MVCPortlet; /**
* 可配置式portlet
*/
public class CoudConfigPortle extends MVCPortlet { @Override
public void doView(RenderRequest renderRequest,
RenderResponse renderResponse) throws IOException, PortletException {
//获取可配置的标题数据
PortletPreferences preferences = renderRequest.getPreferences(); String title = preferences.getValue("customjspConfig_page_title", StringPool.BLANK);
String link = preferences.getValue("customjspConfig_page_link", StringPool.BLANK); System.out.println("title:" + title + ",link:" + link); renderRequest.setAttribute("title", title);
renderRequest.setAttribute("link", link); super.doView(renderRequest, renderResponse);
} }
view.jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %> <portlet:defineObjects /> 标题名为:${title }
连接是:<a href="${link }">这是一个新连接</a>
最后展示效果:

我们进入这个portlet的配置页面


修改对应的值:

保存后刷新页面

点击链接

【liferay】2、可配置portlet的更多相关文章
- 如何用最暴力的方法改写Liferay的原生portlet
最近在论坛上看到有人问如何改写Liferay原有的calendar portlet. 然后研究了一下,直接从portal中把calendar portlet的源码拷贝出来,然后修改再部署上去,但是这个 ...
- Liferay开发人员培训计划
第1节 1.介绍适合和不适合Liferay的一些应用领域2.安装Liferay开发环境,下载Liferay源码:3.配置Liferay bundle.Liferay SDK,配置数据库:4.Lifer ...
- Liferay7 BPM门户开发之17: Portlet 生命周期
Portlet 生命周期 init() =〉 render() =〉 processAction() =〉 processEvent() =〉 serveResource() =〉destroy() ...
- Liferay7 BPM门户开发之16: Liferay中用户\站点\组织架构\角色\用户组以及关联关系
用户 . 站点 . 组织架构 . 角色 . 用户组分别是:Users. Site. Organization. Role. UserGroups Users 用户是Liferay portal中的关键 ...
- Liferay7 BPM门户开发之10: 通用流程实现从Servlet到Portlet(Part1)
开发目的: 实现通用流程自动化处理(即实现不需要hardcode代码的bpm统一处理后台,仅需要写少量前端html form代码和拖拽设计BPM定义) 既可独立运行或可依托于Liferay或依托其它门 ...
- Liferay7 BPM门户开发之42: Liferay核心JSP定制扩展
Liferay最大的好处是不仅接口强大,利于扩展,就连JSP定制扩展都提供了3种方式. 修改核心jsp代码,有3种修改方式:1.暴力修改直接修改(位于portal-web/docroot/html), ...
- 创建一个Portlet工程
使用Liferay的SDK创建一个简单的Portlet,此Portlet不包括业务逻辑.不包括数据库,只有简单的页面展现,用以说明Portlet的开发过程. 一.创建Portlet工程 1.打开Lif ...
- 开发Portlet第一步:如何基于Crystal开发静态Portlet?
当团队需要基于Crystal开发Porltet时,分为以下三部: 基于Crystal开发静态Portlet 基于将静态Portlet修改为基于测试数据的动态Portlet 将动态Portlet与动态数 ...
- 如何自定义Liferay 7 portal的Log in登录界面
前提: 1. Liferay portal 7 2. Liferay IDE 3.0.1 Liferay现有的工具中提供了很多修改portal的模板,以满足开发者的各种自定义需求. 修改的原理是利用M ...
随机推荐
- 【java系列】java开发环境搭建
描述 本篇文章主要讲解基于windows 10系统搭建java开发环境,主要内容包括如下: (1)安装资料准备 (2)安装过程讲解 (3)测试是否安装成功 (4)Hello Word测试 1 安装 ...
- Dubbo源码学习--服务发布(ProxyFactory、Invoker)
上文分析了Dubbo服务发布的整体流程,但服务代理生成的具体细节介绍得还不是很详细.下面将会接着上文继续分析.上文介绍了服务代理生成的切入点,如下: Invoker<?> invoker ...
- PHP 静态缓存
今天来说说PHP页面的静态缓存. 根据个人理解,由于客户端重复的请求某个页面,导致该页面短时间内被重复请求相同的数据,导致给服务端一定的压力,同时用户访问速度也会变慢.此时如果把这个页面缓存起来,客户 ...
- setTimeout和setInterval和单线程
我们知道,js是单线程执行的(单线程j就是说在程序执行时,所走的程序路径按照连续顺序排下来,前面的必须处理好,后面的才会执行).所以其实setTimeout和setInterval所谓的"异 ...
- Android 7.1 WindowManagerService 屏幕旋转流程分析 (二)
一.概述 从上篇[Android 7.1 屏幕旋转流程分析]知道实际的旋转由WindowManagerService来完成,这里接着上面具体详细展开. 调了三个函数完成了三件事,即首先调用update ...
- 表单的自动到json与urlstr
将表单序列化成json,将json转换成字符串 //将表单序列化成json 字符串 $.fn.serializeObject = function(){ var obj = {}; var count ...
- 【Jquery系列】之DOM属性
1 概述 本章将结合JQuery官方API,对Jquery属性进行分析与讲解.主要讲.addClass(),.attr(),,hasClass(),,html(),.prop(),.removeA ...
- 个人作业2:APP案例分析
产品 产品名 网易云音乐 选择原因 除社交软件和浏览器以外,在手机里存在最久的也是使用次数最多的APP就是它了.不管换多少次手机和电脑,它始终在我的装机必备名单上. 调研与评测 第一次上手体验 第一次 ...
- 自学Zabbix3.10.1.1-事件通知Notifications upon events-媒介类型email
自学Zabbix3.10.1.1-事件通知Notifications upon events-媒介类型email 配置媒介Email Administration→Media types->Cl ...
- 自学Zabbix3.5.4-监控项item-History and trends
历史和趋势是在Zabbix中存储收集数据的两种方法.然而,历史保持着每一个收集的价值,趋势保持每小时的平均信息,因此减少了对资源的需求. 1. 保留历史数据 我们可以通过如下方式来设置保留数据的时 ...