Liferay7 BPM门户开发之29: 核心kernel.util包下面的通用帮助类ParamUtil、GetterUtil使用
与其闭门造车,不如直接开动原装、进口、免费的法拉利。 -- 作者说
不多说废话,直接上代码。
ParamUtil
ParamUtil、GetterUtil是Liferay最重要的帮助类
- ParamUtil用途:获取PortletRequest的参数值,并作类型转换和判空处理(内部机制是通过GetterUtil)
- GetterUtil用途:对输入做类型转换、判空处理、赋予默认值(即期望的获取值为空时侯的初始值)
ParamUtil的使用例子1:
public void deleteInterview(
ActionRequest actionRequest, ActionResponse actionResponse)
throws Exception { long interviewId = ParamUtil.getLong(actionRequest, "interviewId");
InterviewLocalServiceUtil.deleteInterview(interviewId); sendRedirect(actionRequest, actionResponse);
}
ParamUtil的使用例子2:
public void updateQuestion(
ActionRequest actionRequest, ActionResponse actionResponse)
throws Exception { long questionId = ParamUtil.getLong(actionRequest, "questionId");
long questionSetId = ParamUtil.getLong(actionRequest, "questionSetId");
String title = ParamUtil.getString(actionRequest, "title");
String description = ParamUtil.getString(actionRequest, "description");
int type = ParamUtil.getInteger(actionRequest, "type"); ServiceContext serviceContext = ServiceContextFactory.getInstance(
actionRequest); try {
if (questionId <= ) {
QuestionLocalServiceUtil.addQuestion(
questionSetId, title, description, type, serviceContext);
}
else {
QuestionLocalServiceUtil.updateQuestion(
questionId, title, description, type, serviceContext);
}
}
catch (Exception e) {
...
} sendRedirect(actionRequest, actionResponse);
}
ParamUtil可以通过get来直接获取PortletRequest参数,如:
public static short get(
PortletRequest portletRequest, String param, short defaultValue) { return GetterUtil.get(portletRequest.getParameter(param), defaultValue);
} public static String get(
PortletRequest portletRequest, String param, String defaultValue) { String returnValue =
GetterUtil.get(portletRequest.getParameter(param), defaultValue); if (returnValue != null) {
return returnValue.trim();
} return null;
}
也可以通过类似getInteger、getLong 获取单一值和获取数组的getIntegerValues、getLongValues之类的方法(用于checkbox的提交)实际都是一样的。
区别是getIntegerValues、getLongValues的返回值是通过调用GetterUtil
public static int getInteger(HttpServletRequest request, String param) {
         return GetterUtil.getInteger(request.getParameter(param));
     }
     public static int getInteger(
         HttpServletRequest request, String param, int defaultValue) {
         return get(request, param, defaultValue);
     }
     public static int[] getIntegerValues(
         HttpServletRequest request, String param) {
         return getIntegerValues(request, param, new int[]);
     }
     public static int[] getIntegerValues(
         HttpServletRequest request, String param, int[] defaultValue) {
         return GetterUtil.getIntegerValues(
             request.getParameterValues(param), defaultValue);
     }
同时,还可以通过print来打印参数输出,方便程序员使用
public static void print(PortletRequest portletRequest) {
         Enumeration<String> enu = portletRequest.getParameterNames();
         while (enu.hasMoreElements()) {
             String param = enu.nextElement();
             String[] values = portletRequest.getParameterValues(param);
             for (int i = ; i < values.length; i++) {
                 System.out.println(param + "[" + i + "] = " + values[i]);
             }
         }
     }     
另外较高版本增加了ServiceContext的参数
static float getFloat(ServiceContext serviceContext, String param, float defaultValue) static float[] getFloatValues(ServiceContext serviceContext, String param, float[] defaultValue)
GetterUtil
GetterUtil的代码,就不具体解释了
可以访问:
https://docs.liferay.com/portal/5.1/javadocs/portal-kernel/com/liferay/portal/kernel/util/GetterUtil.java.html
GetterUtil的使用例子:发送request属性到jsp
//java:
package com.liferay.docs.exampleserviceconsumerportlet; import java.io.IOException;
import javax.portlet.Portlet;
import javax.portlet.PortletException;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
import com.liferay.portal.kernel.portlet.bridges.mvc.MVCPortlet;
import com.liferay.portal.service.UserLocalService;
import com.liferay.bookmarks.service.BookmarksFolderLocalService; @Component(
immediate = true,
property = {
"com.liferay.portlet.display-category=category.sample",
"com.liferay.portlet.instanceable=true",
"javax.portlet.display-name=Example Service Consumer Portlet",
"javax.portlet.init-param.template-path=/",
"javax.portlet.init-param.view-template=/view.jsp",
"javax.portlet.security-role-ref=power-user,user"
},
service = Portlet.class
)
public class ExampleServiceConsumerPortlet extends MVCPortlet { @Override
public void doView(RenderRequest request, RenderResponse response)
throws IOException, PortletException { int userCount = getUserLocalService().getUsersCount();
request.setAttribute("USER_COUNT", userCount); int bookmarksFolderCount =
getBookmarksFolderLocalService().getBookmarksFoldersCount();
request.setAttribute("BOOKMARKS_FOLDER_COUNT", bookmarksFolderCount); super.doView(request, response);
} public BookmarksFolderLocalService getBookmarksFolderLocalService() {
return _bookmarksFolderLocalService;
} public UserLocalService getUserLocalService() {
return _userLocalService;
} @Reference
public void setBookmarksFolderLocalService(
BookmarksFolderLocalService bookmarksFolderLocalService) { _bookmarksFolderLocalService = bookmarksFolderLocalService;
} @Reference
public void setUserLocalService(UserLocalService userLocalService) {
_userLocalService = userLocalService;
} private UserLocalService _userLocalService;
private BookmarksFolderLocalService _bookmarksFolderLocalService;
}
//jsp:
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<%@ page import="com.liferay.portal.kernel.util.GetterUtil" %>
<portlet:defineObjects /> <%
int userCount = GetterUtil.getInteger(renderRequest.getAttribute("USER_COUNT"));
int bookmarksFolderCount = GetterUtil.getInteger(renderRequest.getAttribute("BOOKMARKS_FOLDER_COUNT"));
%> <p>The portal has <%= userCount %> users.</p>
<p>The portal has <%= bookmarksFolderCount %> bookmarks folders.</p>
GetterUtil和ParamUtil的区别是:ParamUtil是解析请求专用类,而GetterUtil是通用的类型转换输出类
使用这两个类ParamUtil、GetterUtil的好处显而易见,如果配合Validator类,像判空、类型转换、验证的大段代码可以大大的省略,非常简洁
Liferay7 BPM门户开发之29: 核心kernel.util包下面的通用帮助类ParamUtil、GetterUtil使用的更多相关文章
- Liferay7 BPM门户开发之37: Liferay7下的OSGi Hook集成开发
		hook开发是Liferay客制扩展的一种方式,比插件灵活,即可以扩展liferay门户,也能对原有特性进行更改,Liferay有许多内置的服务,比如用hook甚至可以覆盖Liferay服务. 可作为 ... 
- Liferay7 BPM门户开发之17: Portlet 生命周期
		Portlet 生命周期 init() =〉 render() =〉 processAction() =〉 processEvent() =〉 serveResource() =〉destroy() ... 
- Liferay7 BPM门户开发之10: 通用流程实现从Servlet到Portlet(Part1)
		开发目的: 实现通用流程自动化处理(即实现不需要hardcode代码的bpm统一处理后台,仅需要写少量前端html form代码和拖拽设计BPM定义) 既可独立运行或可依托于Liferay或依托其它门 ... 
- Liferay7 BPM门户开发之12:acitiviti和liferay用户权限体系集成
		写到第12章才出现Liferay的内容,希望可以厚积薄发. 我们的目标是不使用不维护Activiti的用户组织架构,只维护Liferay的体系,这样的好处是非常明显的,即不用做组织架构的同步工作. 原 ... 
- Liferay7 BPM门户开发之44: 集成Activiti展示流程列表
		处理依赖关系 集成Activiti之前,必须搞清楚其中的依赖关系,才能在Gradle里进行配置. 依赖关系: 例如,其中activiti-engine依赖于activiti-bpmn-converte ... 
- Liferay7 BPM门户开发之47: 集成Activiti待办已办任务清单和流程启动
		首先增加两个Portlet,分别用于待办处理.流程启动.待办是别人发起的流程,流到自己这里的流程:流程启动用于发起新的流程. 程序文件放置于 在ACtivit中待办概念分两种,1是指派给你的,专门的指 ... 
- Liferay7 BPM门户开发之41: Expando API入门
		Expando 是liferay的一种自定义表格扩展的方式,从5.0就已存在 , 可以在运行时新建表格\字段\行\值. 这是一种Service Builder之外的轻量级替代扩展方式,不必像Servi ... 
- Liferay7 BPM门户开发之40: Form表单的Action到Render的数据传递
		在Form提交后的变量,很多情况是要展现在jsp页面中,这时Action到Render的变量传递就非常有用. 例如,您在数据库中添加了学生的详细信息. 为了实现这一需求,先创建Form表单(学生的细节 ... 
- Liferay7 BPM门户开发之39: Form表单提交的ProcessAction处理
		在v6.2开始后,需要设置<requires-namespaced-parameters>false</requires-namespaced-parameters> 来避免 ... 
随机推荐
- winform-全局异常捕获作用
			using System;using System.Collections.Generic;using System.Linq;using System.Windows.Forms;using Jxs ... 
- 【html】:禁止鼠标事件
			<body oncontextmenu="return false" onselectstart="return false" ondragstart=& ... 
- 《UML大战需求分析》阅读笔记3
			流程分析利器--活动图 活动图属于行为建模的一种.用来分析的不是系统中的某个属性,而是系统或是其中某个部分的活动.结构建模表达的是静态内容,行为建模表达的是动态内容. 在介绍活动图之前,先介绍一下行为 ... 
- keil 的头文件 .
			许多初学者使用网上下载的程序时都会遇到这样一个问题,就是头文件找不到.我想就这个问题说明一下./·首先,我们用到的KEIL有几种版本的,头文件也不同.有reg51.h和at89x51.h两种比较常见. ... 
- mvc-servlet---ServletConfig与ServletContext对象详解(转载)
			ServletConfig与ServletContext对象详解 一.ServletConfig对象 在Servlet的配置文件中,可以使用一个或多个<init-param>标签为s ... 
- 502 Server dropped connection
			在本地电脑上开启了,全局VPN代理后,出现 502 报错. 502 Server dropped connection The following error occurred while tryin ... 
- [算法]——全排列(Permutation)以及next_permutation
			排列(Arrangement),简单讲是从N个不同元素中取出M个,按照一定顺序排成一列,通常用A(M,N)表示.当M=N时,称为全排列(Permutation).从数学角度讲,全排列的个数A(N,N) ... 
- Windbg符号与源码 《第二篇》
			符号文件是一种辅助数据,它包含了对应用程序代码的一些标注信息,这些信息在调试过程中非常有用.如果没有辅助数据,那么能获得的信息就只有应用程序的二进制文件.二进制文件很难调试,因为无法看到代码中的函数名 ... 
- Dynamic CRM 2013学习笔记(五)禁止修改、删除审批通过后的单据
			审批通过后的单据,一般要对其进行控制,不能修改,不能添加,删除等,下面分别介绍下如何实现: 一. 禁止修改: 1. 主表控制,如果页面上审批状态为审批中或审批通过,就把整个页面都disable掉 1: ... 
- MVC4+WebApi+Redis Session共享练习(上)
			这几天生病了,也没有心情写博客,北京医院真心伤不起呀,钱不少花,病没治好,还增加了新病,哎不说了,周末还得去大医院检查一下,趁女盆友还没有回来,把前几天写的东西总结一下.本文也会接触一点webApi的 ... 
