在写增删改查的时候,自己动手写了几个通用的工具类,这几个通用的工具类也是基于API写的

第一个是liferay中的分页。跟我们做普通的web开发,分页是一样的首先需要建立一个分页的实体的类

package com.ebizwindow.example.utils;

public class Page {

	private int pageCount;
private int pageNo;
private int pageSize; public Page() {
} public int getPageCount() {
return pageCount;
} public void setPageCount(int pageCount) {
this.pageCount = pageCount;
} public int getPageNo() {
return pageNo;
} public void setPageNo(int pageNo) {
this.pageNo = pageNo;
} public int getPageSize() {
return pageSize;
} public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
}

  第二个是实现分页的逻辑代码

	private void doList(PortletRequest portletRequest) throws SystemException {
long comapnyId = PortalUtil.getCompanyId(portletRequest);
List<Orenge> results = OrengeLocalServiceUtil.searchByCompanyId(
comapnyId, QueryUtil.ALL_POS, QueryUtil.ALL_POS);
int pageCount = results.size();
Page page = new Page();
page.setPageSize(2);
int pageNo = ParamUtil.getInteger(portletRequest, "pageNo", 0);
if (pageNo == 0) {
if (portletRequest.getPortletSession().getAttribute("pageNo") != null) {
pageNo = (Integer) portletRequest.getPortletSession().getAttribute("pageNo");
} else {
pageNo = 1;
}
}
page.setPageNo(pageNo);
if (pageCount % page.getPageSize() == 0) {
page.setPageCount(pageCount / page.getPageSize());
} else {
page.setPageCount(pageCount / page.getPageSize() + 1);
}
int start = (page.getPageNo() - 1) * page.getPageSize() ;
int end = page.getPageSize() * page.getPageNo() ;
results = OrengeLocalServiceUtil.searchByCompanyId(comapnyId, start, end); portletRequest.setAttribute("results", results);
portletRequest.setAttribute("pageCount", page.getPageCount());
portletRequest.getPortletSession().setAttribute("pageNo", pageNo); }

  第二个通用的工具类是我们跳转的其他的portlet的Portlet路径的工具类

/**
*
*/
package com.ebizwindow.example.utils; import java.security.Key;
import java.util.List; import javax.portlet.ActionRequest;
import javax.portlet.PortletMode;
import javax.portlet.PortletModeException;
import javax.portlet.PortletRequest;
import javax.portlet.PortletURL;
import javax.portlet.WindowState;
import javax.portlet.WindowStateException;
import javax.servlet.http.HttpServletRequest; import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.util.HttpUtil;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.kernel.util.StringUtil;
import com.liferay.portal.kernel.util.UnicodeProperties;
import com.liferay.portal.kernel.util.WebKeys;
import com.liferay.portal.model.Layout;
import com.liferay.portal.model.PortletConstants;
import com.liferay.portal.model.User;
import com.liferay.portal.security.auth.AuthTokenUtil;
import com.liferay.portal.service.LayoutLocalServiceUtil;
import com.liferay.portal.service.UserLocalServiceUtil;
import com.liferay.portal.theme.ThemeDisplay;
import com.liferay.portal.util.PortalUtil;
import com.liferay.portlet.PortletURLFactoryUtil;
import com.liferay.util.Encryptor;
import com.liferay.util.EncryptorException; /**
* @author Ivan Li
*
*/
public class PortletURLUtil { private static Log _log = LogFactoryUtil.getLog(PortletURLUtil.class); public static String getPortletURLWithinCurrentPage(
PortletRequest portletRequest, String portletId, int lifeCycle,
String windowState, String portletMode) throws PortalException,
SystemException {
String portletURL = null; HttpServletRequest request = PortalUtil.getHttpServletRequest(portletRequest); ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(WebKeys.THEME_DISPLAY); String targetPortletId = null;
String rootPortletId = PortletConstants.getRootPortletId(portletId); Layout layout = themeDisplay.getLayout();
if (layout != null) { UnicodeProperties typeSettings = layout.getTypeSettingsProperties(); labelBreak:
for(String key : typeSettings.keySet()) {
String value = typeSettings.get(key);
int idx = value.indexOf(rootPortletId);
if (idx >= 0) {
String[] portletIds = StringUtil.split(value);
for(String id : portletIds) {
if (id.contains(rootPortletId)) {
targetPortletId = id;
break labelBreak;
}
}
}
} StringBuilder sb = new StringBuilder();
String layoutURL = PortalUtil.getLayoutFriendlyURL(layout, themeDisplay); sb.append(layoutURL);
sb.append(StringPool.QUESTION).append("p_p_id").append(StringPool.EQUAL).append(targetPortletId);
sb.append(StringPool.AMPERSAND).append("p_p_lifecycle").append(StringPool.EQUAL).append(lifeCycle);
sb.append(StringPool.AMPERSAND).append("p_p_state").append(StringPool.EQUAL).append(windowState);
sb.append(StringPool.AMPERSAND).append("p_p_mode").append(StringPool.EQUAL).append(portletMode); portletURL = sb.toString(); } else {
_log.debug("Get portlet URL by portletId within the current page!");
}
return portletURL;
} public static String getPortletURLByUserId(PortletRequest portletRequest, long userId, String portletId) throws PortalException, SystemException {
User user = UserLocalServiceUtil.getUserById(userId);
long groupId = user.getGroup().getGroupId(); return getPortletURLByGroupId(portletRequest, groupId, portletId, 1, WindowState.MAXIMIZED.toString(), PortletMode.VIEW.toString());
} public static String getPortletURLByGroupId(PortletRequest portletRequest,
long groupId, String portletId, int lifeCycle, String state,
String mode) throws SystemException, PortalException {
String portletURL = null;
Layout selectedLayout = null;
String targetPortletId = null;
String rootPortletId = PortletConstants.getRootPortletId(portletId);
List<Layout> layouts = LayoutLocalServiceUtil.getLayouts(groupId, false);
if (layouts != null){
labelBreak:
for(Layout layout : layouts) {
UnicodeProperties typeSettings = layout.getTypeSettingsProperties();
for(String key : typeSettings.keySet()) {
String value = typeSettings.get(key);
int idx = value.indexOf(rootPortletId);
if (idx >= 0) {
String[] portletIds = StringUtil.split(value);
for(String id : portletIds) {
if (id.contains(rootPortletId)) {
selectedLayout = layout;
targetPortletId = id;
break labelBreak;
}
}
}
}
}
} if (selectedLayout != null) {
StringBuilder sb = new StringBuilder();
HttpServletRequest request = PortalUtil.getHttpServletRequest(portletRequest);
ThemeDisplay themeDisplay = (ThemeDisplay)portletRequest.getAttribute(WebKeys.THEME_DISPLAY);
String layoutURL = PortalUtil.getLayoutFriendlyURL(selectedLayout, themeDisplay); sb.append(layoutURL); sb.append(StringPool.QUESTION).append("p_auth").append(StringPool.EQUAL);
sb.append(processValue(null, AuthTokenUtil.getToken(request))); sb.append(StringPool.AMPERSAND).append("p_p_id").append(StringPool.EQUAL).append(targetPortletId);
sb.append(StringPool.AMPERSAND).append("p_p_lifecycle").append(StringPool.EQUAL).append(lifeCycle);
sb.append(StringPool.AMPERSAND).append("p_p_state").append(StringPool.EQUAL).append(state);
sb.append(StringPool.AMPERSAND).append("p_p_mode").append(StringPool.EQUAL).append(mode); portletURL = sb.toString();
} else {
_log.debug("Get Portlet URL By UserId and portletId with empty result!");
} return portletURL;
} public static PortletURL getPortletURL(ActionRequest actionRequest) throws PortalException, SystemException {
long groupId = PortalUtil.getScopeGroupId(actionRequest);
String portletId = PortalUtil.getPortletId(actionRequest);
long plid = PortalUtil.getPlidFromPortletId(groupId, portletId);
PortletURL redirectURL = PortletURLFactoryUtil.create(PortalUtil.getHttpServletRequest(actionRequest),
portletId, plid, PortletRequest.ACTION_PHASE);
try {
redirectURL.setPortletMode(actionRequest.getPortletMode());
redirectURL.setWindowState(actionRequest.getWindowState());
} catch (PortletModeException e) {
_log.error(e);
} catch (WindowStateException e) {
_log.error(e);
}
return redirectURL;
} private static String processValue(Key key, String value) {
if (key == null) {
return HttpUtil.encodeURL(value);
} else {
try {
return HttpUtil.encodeURL(Encryptor.encrypt(key, value));
} catch (EncryptorException ee) {
return value;
}
}
} }

  

liferay总结的通用的工具类的更多相关文章

  1. 一个爬取https和http通用的工具类(JDK自带的URL的用法)

    今天在java爬取天猫的时候因为ssl报错,所以从网上找了一个可以爬取https和http通用的工具类.但是有的时候此工具类爬到的数据不全,此处不得不说python爬虫很厉害. package cn. ...

  2. 免费IP代理池定时维护,封装通用爬虫工具类每次随机更新IP代理池跟UserAgent池,并制作简易流量爬虫

    前言 我们之前的爬虫都是模拟成浏览器后直接爬取,并没有动态设置IP代理以及UserAgent标识,本文记录免费IP代理池定时维护,封装通用爬虫工具类每次随机更新IP代理池跟UserAgent池,并制作 ...

  3. 通用脱敏工具类和判断URL

    通用脱敏工具类 public class DesensitizationUtil { private static final int SIZE = 6; private static final S ...

  4. utils部分--一些通用的工具类封装

    1.简介 utils部分是对一些常用的工具类进行简单的封装,使用起来比较方便.这里列举常用的一些. 2.ContextUtils使用 主要封装了网络判断.一些方法解释如下: ? 1 2 3 4 5 6 ...

  5. JAVA实现导出excel功能,封装通用导出工具类

    引入maven <!--excel导出--> <dependency> <groupId>net.sourceforge.jexcelapi</groupId ...

  6. 微信公众平台开发(1) 通用的工具类CommonUtil

    1.通用的调用微信的方法 /** * * @param requestUrl 接口地址 * @param requestMethod 请求方法:POST.GET... * @param output ...

  7. 通用HttpClientUtil工具类

    package com.*.utils; import java.io.IOException; import java.net.URI; import java.util.ArrayList; im ...

  8. Java的各种工具类

    下面是java的各种工具,包括获取时间和时间比较,检验集合和字符串是否为空和长度大小等等 1 import java.io.BufferedReader; import java.io.File; i ...

  9. 使用POI插件,提取导出excel的工具类

    在网站的不同的模块都需要使用到导入导出excel的功能,我们就需要写一个通用的工具类ExcelUtil. 我的思路:首先,导入和导出的Excel的文件格式固定:主标题,二级标题,数据行(姑且就这么叫) ...

随机推荐

  1. LeetCode 26 Remove Duplicates from Sorted Array (移除有序数组中重复数字)

    题目链接: https://leetcode.com/problems/remove-duplicates-from-sorted-array/?tab=Description   从有序数组中移除重 ...

  2. sencha touch 可自动增长高度TextArea

    js代码如下: /* *高度自动增长的文本框 */ Ext.define('ux.TextArea', { extend: 'Ext.field.TextArea', xtype: 'autoText ...

  3. 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验十七:IIC储存模块 - FIFO读写

    . int main() . { . int A: . A = : . } 代码17.1 话题为进入之前,首先让我们来聊聊一些题外话.那些学过软核NIOS的朋友可曾记得,软核NIOS可利用片上内存作为 ...

  4. 常用linux命令及shell脚本

    参考:Linux命令大全 分割大文件 Split命令 按行分割(只能是文本文件) $split -l 1000 big_file 前缀 按文件大小分割 $split -b 64m big_file 前 ...

  5. PHP服务器访问优化

    常规的优化措施: 磁盘写入,网络安全,证书加密,CPU,内存,DNS解析,数据库优化,页面gzip压缩 PHP gzip压缩打开: 打开php目录下的php.ini文件,找到zlib.output_c ...

  6. ASP.NET Cookie概念、CURD操作、原理、实际运用

    会话就WEB开发来说,一个会话就是你通过浏览器与服务器之间的一次通话,只不过这种通话是以用浏览器浏览的方式来实现的. 就会话的应用来说,一般会话是用来识别用户的,比如你可以使用会话级变量记录当前用户已 ...

  7. Notepad++如何关闭最近打开的文件的历史记录功能

    Notepad++是Windows 操作系统下的一套非常有特色的自由软件的纯文字编辑器(许可证:GPL),有完整的中文化接口及支持多国语言编写的 功能(UTF8 技术).它的功能比Windows中的N ...

  8. 【CF860E】Arkady and a Nobody-men 长链剖分

    [CF860E]Arkady and a Nobody-men 题意:给你一棵n个点的有根树.如果b是a的祖先,定义$r(a,b)$为b的子树中深度小于等于a的深度的点的个数(包括a).定义$z(a) ...

  9. Android开发小技巧之根据position判断ListView是否在显示

    使用ListView的时候,会有判断指定项是否正在显示的需求,其实很简单,代码如下: private boolean isShowing(int position) { int showViewCou ...

  10. ubuntu16.04下安装sublime_text

    1 在终端输入: sudo add-apt-repository ppa:webupd8team/sublime-text-3 添加sublime text3的软件源: 2 sudo apt-get ...