定义: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的更多相关文章

  1. 如何用最暴力的方法改写Liferay的原生portlet

    最近在论坛上看到有人问如何改写Liferay原有的calendar portlet. 然后研究了一下,直接从portal中把calendar portlet的源码拷贝出来,然后修改再部署上去,但是这个 ...

  2. Liferay开发人员培训计划

    第1节 1.介绍适合和不适合Liferay的一些应用领域2.安装Liferay开发环境,下载Liferay源码:3.配置Liferay bundle.Liferay SDK,配置数据库:4.Lifer ...

  3. Liferay7 BPM门户开发之17: Portlet 生命周期

    Portlet 生命周期 init() =〉 render() =〉 processAction() =〉 processEvent() =〉 serveResource() =〉destroy() ...

  4. Liferay7 BPM门户开发之16: Liferay中用户\站点\组织架构\角色\用户组以及关联关系

    用户 . 站点 . 组织架构 . 角色 . 用户组分别是:Users. Site. Organization. Role. UserGroups Users 用户是Liferay portal中的关键 ...

  5. Liferay7 BPM门户开发之10: 通用流程实现从Servlet到Portlet(Part1)

    开发目的: 实现通用流程自动化处理(即实现不需要hardcode代码的bpm统一处理后台,仅需要写少量前端html form代码和拖拽设计BPM定义) 既可独立运行或可依托于Liferay或依托其它门 ...

  6. Liferay7 BPM门户开发之42: Liferay核心JSP定制扩展

    Liferay最大的好处是不仅接口强大,利于扩展,就连JSP定制扩展都提供了3种方式. 修改核心jsp代码,有3种修改方式:1.暴力修改直接修改(位于portal-web/docroot/html), ...

  7. 创建一个Portlet工程

    使用Liferay的SDK创建一个简单的Portlet,此Portlet不包括业务逻辑.不包括数据库,只有简单的页面展现,用以说明Portlet的开发过程. 一.创建Portlet工程 1.打开Lif ...

  8. 开发Portlet第一步:如何基于Crystal开发静态Portlet?

    当团队需要基于Crystal开发Porltet时,分为以下三部: 基于Crystal开发静态Portlet 基于将静态Portlet修改为基于测试数据的动态Portlet 将动态Portlet与动态数 ...

  9. 如何自定义Liferay 7 portal的Log in登录界面

    前提: 1. Liferay portal 7 2. Liferay IDE 3.0.1 Liferay现有的工具中提供了很多修改portal的模板,以满足开发者的各种自定义需求. 修改的原理是利用M ...

随机推荐

  1. devdependencies与dependencies的区别

    一直在纠结devdependencies与dependencies的区别是什么,下面就对此作出详细介绍,希望对你有所帮助! 我们在使用npm install 安装模块或插件的时候,有两种命令把他们写入 ...

  2. Python3_打开和运行方式

    蹬蹬蹬--第一次写博客,如有错误欢迎指正. Python很火,前几天也是因为需要装了一下,但是并没有用它,今天打开准备刚准备试下,才发现自己对这个软件一无所知,百度了一些资料发现并不能用才知道pyth ...

  3. php代码在服务器中查看接值

    error_log("You messed up!", 3, "/var/tmp/my-errors.log");

  4. WPF水珠效果按钮组

    效果图 相关知识 这部分基本就是废话,网上都能找到,我只不过是整理了以下.建议先不看,用到的时候可以回来看看 贝塞尔曲线 先来看两组图,有助于理解什么是贝塞尔曲线(图片取自维基百科,参考链接1) 二次 ...

  5. 来自Ext的UI边界识别函数constrain

    //constrain函数 var min = 1 var max = 3; var num = 4; var result = Math.min(Math.max(num,min),max); co ...

  6. 简单的调用OpenCV库的Android NDK开发 工具Android Studio

    前言 本博客写于2017/08/11, 博主非专业搞安卓开发, 只是工作的需要倒腾了下Android NDK相关的开发, 博文中有什么不正确.不严格的地方欢迎指正哈    本文后续也许还会有删改, 就 ...

  7. ORACLE-015:ora-25153 暂时表空间为空,ora01652 无法通过128

    写了一个复杂的select语句,突然oracle就报了:ora-25153 暂时表空间为空,这个错误,于是网上查了下.发现了例如以下解决方法:创建一个新的暂时表空间. 首先要有system权限.登录进 ...

  8. android项目 之 记事本(11) ----- 加入数据库

    本文是自己学习所做笔记.欢迎转载.但请注明出处:http://blog.csdn.net/jesson20121020 通过之前的10节,已实现了记事本的大部分功能,有加入拍照.加入照片,加入录音,加 ...

  9. Spring之AOP实现面向切面编程

    近期在学Java的动态代理和Spring面向切面编程,越来越认为Spring设计的真的是太完美了.于是,想一个最简单的样例来跑一下.但问题多多,显示缺少,Aspectj里面的相应的类.导入Aspect ...

  10. Java高级开发工程师面试——多线程

    来自:Sanesee 链接:http://www.sanesee.com/article/java-engineer-interview-of-thread 1.进程和线程的区别? 进程是一个具有独立 ...