




免费预览已结束,剩余30页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Liferay常用API文档状态:文档标识:YFZX-EIP-lifery-doc 草稿 正式发布 修改编 撰:胡启稳编撰日期:2010-09-01保密级别:一般文档版本:004研发中心 2010文档的模板修订历史记录日期版本说明作者2010-09-140.0.1初始化版本建立胡启稳2010-09-270.0.2增加文档说明和日志操作及MyEclispe IDE配置胡启稳2010-10-130.0.3完善IDE插件安装及常用快捷键胡启稳2010-11-160.0.4更新判断服务器类型的API胡启稳第 33 页目录1JAVA分类41.1验证类(com.liferay.util.Validator)41.1.1是否为空或非空41.1.2是否为Email地址41.1.3是否为数字51.1.4是否为字符51.2字符串类(com.liferay.util.StringUtil)51.2.1提取子串51.2.2合并List、数组51.2.3字符串逆序输出61.3参数获取类(com.liferay.util.ParamUtil)61.3.1获取字符串71.3.2获取数字71.3.3获取boolean71.4类型转换类(com.liferay.util.GetterUtil)81.4.1Boolean转换81.4.2日期转换81.4.3数据转换81.5Portal工具类(com.liferay.portal.util.portalUtil)91.5.1获取company91.5.2获取Host91.5.3将PortletRequest转化为HttpServletRequest91.5.4获取Layout相关信息101.5.5从HttpServletRequest获取PortalRL101.5.6获取PortletGroupID101.5.7获取portletTitle101.5.8通过request获取User信息111.5.9系统分组、系统角色信息121.6其他122JAVASCRIPT分类132.1DOM操作132.1.1使用$()函数142.1.2使用$F()函数142.1.3使用$A()函数142.1.4使用$H()函数152.1.5使用Tray.these()函数162.2AJAX162.2.1Ajax.Request162.2.2Ajax.Request172.3其他182.3.1数组182.3.2Try.these()函数201 引言1.1 编写目的本文描述企业信息门户所使用Liferay的一些开发技巧,常用API等。旨在为开发提供沉淀,使代码能够得到更多的重用,代码结构更清晰,节省编码时间,降低系统开发风险。本文档阅读对象:开发人员。1.2 文档约定企业信息门户系统简称:EIP。Liferay版本:4.2.2。1.3 文档概述本文档旨在收集整理Liferay开发中的一些技巧,常用API等,以简化开发人员的编码工作。本文档主要包括以下内容:Java分类:Java分类主要介绍Liferay工程体系提供的一些常用工具类API Liferay提供的验证类 Liferay提供的字符串类 Liferay提供的参数获取类 Liferay提供的类型转换类 Liferay提供的Portal工具类JavaScript分类:javaScript分类,主要介绍liferay工程集成的prototype 1.4的使用。 DOM操作 AJAX 其他2 Java篇2.1 验证类(com.liferay.util.Validator)此验证类是为常用的一些验证如:是否为空、数字等使用方法为:Validator.isNull(string);此类里面的方法为静态方法,类不需要实例化,下面的如无特别说明,方法均为静态方法。2.1.1 是否为空或非空字符串是否为空:boolean isNull(String s)字符串是否不为空:boolean isNotNull(String s)数组是否为空:boolean isNull(Object array)数组是否不为空:Boolean isNotNull(Object array)2.1.2 是否为Email地址Boolean isEmailAddress(String ea)2.1.3 是否为数字验证字符串是否全为数字:boolean isDigit(String s)验证字符是否为数字:boolean isDigit(Char c)2.1.4 是否为字符验证字符串是否为ascii字符:Boolean isChar(String s)验证字符是否为ascii字符串:boolean isChar(char c)2.2 字符串类(com.liferay.util.StringUtil)字符串工具类是对Java 的String类的扩展和重写,本类里面的方法很多,本文档只介绍一些常用方法且JDK里面没有的方法。2.2.1 提取子串从字符串中提取出数字:String extractDigits(String s)根据分隔符提取第一个子串:String extractFirst(String s,String delimiter)根据做分隔符提取最后一个:String extractLast(String s,String delimiter)2.2.2 合并List、数组将指标的list合并成一个字符串:默认方法以“,”分隔:String merge(List list)String merge(String array)指标分隔符合并:String merge(List list,String delimiter) String merge(String array,String delimiter)2.2.3 字符串逆序输出字符串逆序:String reverse(String s)2.3 参数获取类(com.liferay.util.ParamUtil)ParamUtil是对参数获取的一个封装,可以方便的对获取到的参数赋予默认值,类型转换等。Request支持servletRequest和PortletRequest提供了对于常用类型的转换,如:String pageNumber = request.getParameter(pageNumber);int intPageNumber = 0;if (pageNumber != null) / 分页跳转,赋值要跳转到那个页面intPageNumber = Integer.parseInt(pageNumber); else / 第一次进入,默认显示第一页的数据intPageNumber = 1;上面这段代码如果采用ParamUtile则变为:int pageNumber = ParamUtil.getInteger(request, pageNumber, 1);如:String name=request.getParameter(searchname)=null?:request.getParameter(searchname); 则变为:String name = ParamUtil.getString(request, searchname);2.3.1 获取字符串String ParamUtil.getString(ServletRequest req,String param)String ParamUtil.getString(ServletRequest req,String param,String defaultVlue)如果没有指定默认值,则默认值为“”。2.3.2 获取数字Int ParamUtil.getInteger(ServletRequest req,String param)Int ParamUtil.getInteger(ServletRequest req,String param,int defaultVlue)如果没有指定默认值,则默认值为“0”。Double ParamUtil.getDouble(ServletRequest req,String param)Double ParamUtil.getDouble(ServletRequest req,String param,double defaultVlue)如果没有指定默认值,则默认值为0.0getFloat、getShort、getLong类似2.3.3 获取booleanBoolean ParamUtil.getBoolean(servlet req,String param)Boolean ParamUtil.getBoolean(servlet req,String param,Boolean default)这个方法对于参数为:“true”,“t”,“y”,“on”,“1”时会转化为true,默认为false;如果是其他的情况不要使用。2.4 类型转换类(com.liferay.util.GetterUtil)这个工具类是类型转换类,其他的工具类很多都是以这个为基础的:2.4.1 Boolean转换Boolean getBoolean(String value);Boolean getBoolean(String value,Boolean defaultValue);默认为false,value为“true”,“t”,“y”,“on”,“1”时被转换为true2.4.2 日期转换Date getDate(String value,DataFromat df)Date geDate(String value,DataFormat df,Date defaultValue)如果没有传入默认日期则默认日期为当前时间。使用方法如下:String dateString = 20090103;DateFormat timeStamp = new SimpleDateFormat(yyyyMMdd);Date date = GetterUtil.getDate(dateString, timeStamp);2.4.3 数据转换Int getInteger(String value)Int getInteger(String value,int defaultValue)将字符串转换为整数,默认值为0其他的long、double、float、short、double类似2.5 Portal工具类(com.liferay.portal.util.portalUtil)Portal工具类里面可以获取LiferayPortal相关的一些信息如portletTitle、PortletURL等,由于大部分方法很简单,所以只列方法名,并做一些适当的介绍。2.5.1 获取company从httpRequestRequest里面获取companyCompany getCompnay(HttpServletRequest req);String getCompanyId(HttpServletRequest req)从actionRequest里面获取companyCompany getCompany(actionRequest req)String getCompanyId(actionRequest req)从RenderRequest里面获取companyCompany getCompany(RenderRequest req)String getCompanyId(RenderRequest req)2.5.2 获取HostString getHost(HttpServletRequest req);String getHost(ActionRequest req)String getHost(RenderRequest req)2.5.3 将PortletRequest转化为HttpServletRequestHttpServletRequest getHttpServletRequest(PortletRequest req)2.5.4 获取Layout相关信息String getLayoutEditPage(Layout layout)String getLayoutURL(Layout layout,ThemeDisplay themeDisplay)String getLayoutURL(Layout layout,ThemeDisplay themeDisplay,Boolean doAsUser)String getLayoutActualURL(Layout layout,String mainPath)String getLayoutActualURL(Layout layout,String friendlyURL)String getLayoutFriendlyURL(Layout layout,ThemeDisplay themeDisplay)String geLayoutTarget(Layout layout)2.5.5 从HttpServletRequest获取PortalRLString getPortalURL(HttpServletRequest req)2.5.6 获取PortletGroupIDString getPortletGroupId(String plid);String getPortletGroupId(HttpServletRequest req);String getPortletGroupId(ActionRequest req);String getPortletGroupId(RenderRequest req);2.5.7 获取portletTitleString getPortletTitle(String portletId,User user);String getPortletTitle(Portlet portlet,ServletContext ctx,Local locale)2.5.8 通过request获取User信息 获取User对象User getUser(HttpServletRequest req)User getUser(ActionRequest req)User getUser(RenderRequest req) 获取UserIdString getUser(HttpServletRequest req)String getUser(ActionRequest req)String getUser(RenderRequest req) 获取UserName如果使用传递的Userid查找不到用户,则使用传递的默认用户名String getUserName(String userId,String defaultUserName); 如果使用传递的Userid查找不到用户,则使用传递的默认用户名,如果能够找到则返回一个带链接的用户名,通过此链接可以链接到编辑个人信息的页面(此方法企业门户暂时不可用)。String getUserName(String userId,String defaultUserName,HttpServletRequest req) 获取用户密码String getUserPassword(HttpSession ses);String getUserPassword(HttpServletRequest req);String getUserPassword(ActionRequest req);String getUserPassword(RenderRequest req);2.5.9 系统分组、系统角色信息 获取系统分组、角色:String getSystemGroups();String getSystemRoles(); 验证是否是系统分组、角色Boolean isSystemGroup(String groupName)Boolean isSystemRole(String roleName)2.6 日志在Liferay里面使用日志记录方法如下:首先在类里面声明:private static final Logger _logger = Logger.getLogger(类名.class);如:在日志级别为warn时,输出日志:if (_logger.isEnabledFor(Level.WARN) _logger.warn(message);2.7 获取服务器类型(com.liferay.portal.kernel.util)在Liferay里面可以使用ServerDetector方便的获取当前运行的应用服务器类型,由于不同的应用服务器对于某些代码的处理有其特殊性,所以可以使用此类来做分支处理。使用方法如下:if(ServerDetector.isTomcat()/tomcat server else if(ServerDetector.isWebLogic()/weblogic server2.8 其他在Liferay 4.2.2的工程里面还有许多的Liferay封装好的工具类,存入在util-java这个目录下面。可以经常浏览一下,上面列出的是一些经常用到的工具类。其他的还有如:ColorUtilCookieUtilDateUtilFileUtilLadapUtilListUtil等。不在一一介绍,方法很简单,使用的时候看一下方法名就可能明白如何使用。3 JavaScript篇由于门户里面引入了大量JS,如prototype.js,json.js,sniffer.js,util.js,portal.js,ajax.js,alerts.js,swfobject.js,calendar/calendar_stripped.js,calendar/calendar-setup_stripped.js,colorpicker/colorpicker.js,dragdrop/coordinates.js,dragdrop/drag.js,dragdrop/dragdropzone.js,dragdrop/resize.js,portlet/layout_configuration.js,portlet/messaging.js这些JS有很多是类库,可以帮助我们简化许多工作,这里主要介绍prototype.js和Liferay本身提供的ajax.js3.1 DOM操作DOM获取的主要介绍使用prototype.js,企业门户里面使用的版本是1.4.0。3.1.1 使用$()函数Prototype.js中的$()函数是在dom中使用的最频繁的document.getElementById()的简写。如:var name = document.getElementById(name);可以写为:var name = $(name);和document.getElementById()相比,$()更强大的地方是可以传入多个id返回一个Array数组;如 var array = $(name,password);另外一个好处是,这个函数能传入用string表示的对象ID,也可以传入对象本身,这样,在建立其它能传两种类型的参数的函数时非常有用。3.1.2 使用$F()函数$F()函数是用于返回任何表单输入控件的值,比如text box,drop-down list。这个方法也能用元素id或元素本身做为参数。如:$F(username)等同于:document.getElementById(username).value3.1.3 使用$A()函数$A()函数能把它接收到的单个的参数转换成一个Array对象。这个方法,结合portotype扩展了的Array类,能方便的把任何的可枚举列表转换成或拷贝到一个Array对象。一个推荐的用法就是把DOM Node Lists转换成一个普通的Array对象,从而更有效率的进行遍历,请看下面的例子。functionshowOptions()varNodeList=$(list).getElementsByTagName(option);varnodes=$A(NodeList);nodes.each(function(node)alert(node.nodeName+: +node.innerHTML););liferayprototypepisoft3.1.4 使用$H()函数$H()函数把一些对象转换成一个可枚举的和联合数组类似的Hash对象。示例如下:functiontestHash()/创建一个对象vara=first:10,second:20,third:30;/现在转换成hashvarh=$H(a);alert(h.toQueryString();/显示: first=10&second=20&third=303.1.5 使用Tray.these()函数3.2 AJAX3.2.1 Ajax.Request如:method:为方法:get或postParameters:为参数键值对onSuccess:为回调函数,执行成功后返回的内容,下面用的是一个内部匿名函数下面这个示例是机构维护里面更新托盘组织机构里面的例子。var url = /html/portlet/jgwh/ajaxSort.jsp;var pars = oper=createOrgXMLvar myAjax = new Ajax.Request( url, method: post, parameters: pars, onSuccess: function(t) if(t.responseText.indexOf(success)!=-1)alert(托盘组织机构XML文件更新成功!); );3.2.2 Ajax.Updater如果服务器的另一端返回的信息已经是HTML了,那么使用这个程序包中 Ajax.Updater 类将使代码变得很优雅。用它只需提供哪一个元素需要被AJAX请求返回的HTML填充就可以了,看示例:下面这个示例是个人工作台常用功能订阅点击订阅确定后使用Ajax刷新页面的示例:function changeCommonfunctionPage(url,par) var mailAjax = new Ajax.Updater( commonfunctionContent, url, method: post, parameters: par ); 3.3 其他Prototype对于javascript还有许多的扩展和封装,可以从网上找prototype的api学习。3.3.1 数组在标准的javascript中,如果想把一个array中的所有elements显示出来,可以像下面代码这样写: function showList()var simpsons = Homer, Marge, Lisa, Bart, Meg; for(i=0;isimpsons.length;i+)alert(simpsonsi);使用prototype.js,我们可以把它写成这样: function showList()var simpsons = Homer, Marge, Lisa, Bart, Meg;simpsons.each( function(familyMember)alert(familyMember););在这个例子里面语法看起来很怪异,也没有多少新的改变,请继续往下看。 在继续下面内容之前,我们注意到那个被做为一个参数传递给each函数的函数?我们把它理解成迭代器函数。 就如我们上面看到的,把Array中的elements当成相同的类型使用相同的属性和函数是很通用的。下面看看如何使用arrays的迭代功能。依照标准找到一个element。 function findEmployeeById(emp_id)var listBox = $(lstEmployees)var options = listBox.getElementsByTagName(option);options = $A(options);var opt = options.find( function(employee)return (employee.value = emp_id););alert(opt.innerHTML); /displays the employee nameBuchanan, StevenCallahan, LauraDavolio, Nancy再来看一下,如何过滤一个Array中的元素,从每个元素中得到我们想要的成员。 function showLocalLinks(paragraph)paragraph = $(paragraph);var links = $A(paragraph.getElementsByTagName(a);/找到不是以http开头的链接var localLinks = links.findAll( function(link)var start = link.href.substring(0,4);return start !=http;);var texts = localLinks.pluck(innerHTML);/用一个string获取他们var result = texts.inspect();alert(result);This pisoft hasa localhost oflinks. Some aretestand some are local3.3.2 Try.these()函数Try.these() 方法可以实现调用不同的方法直到其中的一个成功正常的这种需求, 他把一系列的方法作为参数并且按顺序的一个一个的执行这些方法直到其中的一个成功执行,返回成功执行的那个方法的返回值。在下面的例子中, xmlNode.text在一些浏览器中好用,但是xmlNode.textContent在另一些浏览器中正常工作。 使用Try.these()方法我们可以得到正常工作的那个方法的返回值。function getXmlNodeValue(xmlNode) return Try.these( function() return xmlNode.text;, function() return xmlNode.textContent;) );4 IDE篇俗话说“工欲善其事必先利其器”,本篇主要介绍IDE的一些配置方法,使用技巧等。下面如无特别说明IDE为MyEclipse。4.1 配置4.1.1 代码自动提示 Java编辑器代码提示能够大大提高程序员的工作效率,MyEclipse默认情况下,只有对在输入.的时候才会出现自动提示,我们要达到的目标是不管输入什么的时候都会出现自动提示,配置过程如下:(以MyEclipse 版本 8.5为例,其他版本类似)WindowspreferencesJavaEditorcontent Assist图 41如图4-1所示,在“auto activation triggers for java”里面可以看到只有“.”,所以在输入.的时候会出现代码提示,现在在这里面加入abedefghijklmnopqrstuvwxyz,点击apply,当下次在Java编辑器中输入26个字母及.时都会出现自动提示。可以根据自己情况再加上大小字母也可以。上面的“auto activation delay”是延时时间200毫秒,可以根据自己的情况调整。 HTML/jsp编辑器在上面配置后,只会在编写java类的时候出现全提示,如何让在编辑HTML/JSP页面时也出现像DreamWeaver一样的提示呢?配置方法和上面基本一样,方法如下:WidowspreferencesMyEclipseFile and EditorsHTMLHTML Sources图 42如图4-2所示:在“prompt when these characters are inserted:”后面添加上26个英文字母以及、=、.、:等符号,另外加上空格。 = :以及空格,这些符号在编写HTML代码以及CSS样式时会用到,所以也一并加进来。由于JSP页面的自动提示继承自HTML,所以在此配置后,可以应用HTML和JSP编辑器。 XML编辑器配置方法同上。WindowspreferencesFiles and editorsXMLXML Sources图 434.1.2 工作区编码方式修改MyEclipse默认的编码方式为GBK,为保证项目编码的统一,在安装后需要修改编码。WindowspreferencesGeneralWorkspace图 44在text file encodeing里面选择other,选择UTF-8保存。4.1.3 修改控制台显示行数有时在MyEclipse里面运行程序,会在控制台打印出大段的运行结果,但是当内容很多时会无法看到前面的内容,如何修改让MyEclipse控制台显示更多内容呢?WindowsRun/DebugConsole图 45如图4-5所示,在console buffer size里面默认是80000,可以适当的调大就可以在控制吧里面显示更多的内容。4.2 MyEclipse优化MyEclipse的优化有两个方向。一是减少不必要的插件和启动项,二是调整JVM参数。4.2.1 删除不必要的插件和禁用启动项 禁用一些启动项禁用一些MyEclipse的开机加载启项。1. Windowspreferences-Startup and shutdow:在这里关闭一些用不上的内容,只启用可以用得上的,这里基本上可以去掉80%。2. Windowspreferences-MyEclipseMaven4MyEclipseMaven。如果输入了MeEclipe的注册码,会在启动的时候刷新maven库的索引,去掉“Download resposityory index updates on startup”前面的勾。3. Windowspreferences-MyEclipseVlidation。如图图4-6所示,可以去掉除Classpath dependency Validator外的所有build选项,特别是对于企业门户含有大量JSP的工程,可以大大提高第一次的速度性能。图 464. WindowspreferencesGeneralEditorsFile Associations,找到*.JSP,修改JSP默认编辑器,MyEclipse的默认JSP编辑器为“MyEclipse Visual JSF Designer”,这个编辑器在打开JSP时速度非常慢,而且不好用。可以将其修改为普通JSP编辑器。 卸载不必要的插件删除不必要的插件这个适用于MyEclipse 8.5以后的版本,早期版本也可以,但是比较麻烦,使用MyEclipse 8.5新加入的配置管理中心,可以非常方便的卸载不必要的插件。HelpMyEclipse Configure center图 47如图4.7在这里卸载一些用不上的插件。4.2.2 JVM调优JVM调优的方法,是调速MyEclipse运行时的JVM参数,基本思路是为MyEclipse增加更多的内存,避免大量GC带来的性能降低。在MyEclipse的安装目录下面的Myeclipse.ini里面修改相应参数。下面提供一个参考参数如下:-vmargs-Xms512m-Xmx512m-XX:PermSize=128m-XX:MaxPermSize=256m-Xmn168m-XX:ReservedCodeCacheSize=128m-XX:+UseParallelGC4.3 常用快捷键这里只写一些比较常用的,其他具体的可以看Eclipse里面的配置文件4.3.1 经典快捷键Ctrl+1 快速修复(最经典的快捷键,就不用多说了)Ctrl+D: 删除当前行Ctrl+Alt+ 复制当前行到下一行(复制增加)Ctrl+Alt+ 复制当前行到上一行(复制增加)Alt+ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)Alt+ 当前行和上面一行交互位置(同上)Alt+ 前一个编辑的页面Alt+ 下一个编辑的页面(当然是针对上面那条来说了)Al
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025西安浐灞国际港公益性岗位招聘(10人)考试模拟试题及答案解析
- 2025-2030肉牛屠宰自动化设备市场需求与技术发展报告
- 2025-2030肉牛养殖场odor污染治理技术与设备选型报告
- 2025-2030羊肉行业标准体系建设与质量提升路径报告
- 2025-2030矿泉水行业大数据应用与精准营销实践探索
- 2025年中国能源建设集团陕西省电力设计院有限公司社会招聘考试模拟试题及答案解析
- 2025山东鲁诚物业管理有限责任公司招聘2人备考考试试题及答案解析
- 澳柯玛股份有限公司社会招聘职位表备考考试题库附答案解析
- 2025浙江宁波象山县机关事业单位第三批招聘派遣制工作人员16人备考练习试题及答案解析
- 2025年上海戏剧学院附属戏曲学校公开招聘工作人员备考考试题库附答案解析
- 急性肾小球肾炎
- 工程管理面试题目及答案
- 2025秋人教版(2024)八年级上册英语一学期教学计划
- 工贸企业企业安全检查表
- 2025年理赔专业技术职务任职资格考试(理赔员·车险理赔)历年参考题库含答案详解(5套)
- 2025年科创板开通考试试题及答案
- 脊柱骨折护理查房
- 2025年秋沪科版八年级数学上册 第11章综合测试卷
- 粉末冶金制品制造工技能测试题库及答案
- 《产品三维建模与结构设计(UG)》技工全套教学课件
- 昭阳区生活垃圾管理办法
评论
0/150
提交评论