Liferay开发的一些技巧.doc_第1页
Liferay开发的一些技巧.doc_第2页
Liferay开发的一些技巧.doc_第3页
Liferay开发的一些技巧.doc_第4页
Liferay开发的一些技巧.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录一:如何把liferay部署到自定义的context中,而不是ROOT独立的Tomcat1二:如何把liferay部署到自定义的context中,而不是ROOT绑定liferay的Tomcat2三:使不需要的portlet失效:3四:如何完全的隐藏一些portlet4五:如何在登陆portal系统后向session中设置一些对象或其他操作!4六:如何显示hibernate的sql语句:4七:Liferay中SearchContainer的使用方法47.1 概述57.2 Table的标题行57.3 创建SearchContainer57.4 Table的内容57.4.1 设置总条数67.4.2 直接设置查询结果67.4.3 设置Table的显示条目67.5 每一个条目允许的操作67.6 显示table和分页7一:如何把liferay部署到自定义的context中,而不是ROOT独立的Tomcat例子步骤:1. 下载Tomcat,并解压到C:tomcat-5.5.23;2. 下载Liferay Portal Tomcat 5.5.23 (JDK 5) bundle,并解压到C:liferay;3. 重新命名C:liferaywebappsROOT为C:liferaywebappsliferay-portal;4. 把C:liferaywebappsliferay-portal拷贝到C:tomcat-5.5.23下面; 5. 重新命名C:liferayconfCatalinalocalhostROOT.xml文件为liferay-portal.xml,并修改其中内容如下:6. 把c:liferayconfCatalinalocalhostliferay-portal.xml拷贝到C:tomcat-5.5.23confCatalinalocalhost下面;7. 把C:liferaycommonlibnaming-factory.jar文件拷贝到C:tomcat-5.5.23commonlib;8. 把C:liferaycommonext 文件夹拷贝到C:tomcat-5.5.23common;9. 把C:liferaycommonendorsed*.jar 文件拷贝到C:tomcat-5.5.23common下面;10. 把C:liferayserverlibsupport-tomcat.jar 文件拷贝到C:tomcat-5.5.23serverlib下面;11. 编辑C:perties文件,并给common.loader添加值:, $catalina.home/common/lib/ext/*.jar12. 编辑C:tomcat-5.5.23webappsliferay-portalWEB-INFperties,添加下面一行:portal.ctx=/liferay-portal13.编辑C:tomcat-5.5.23bincatalina.bat文件,添加如下命令:set JAVA_OPTS=%JAVA_OPTS% -Xms128m -Xmx1024m -XX:MaxPermSize=128m -Dfile.encoding=UTF8 -Duser.timezone=GMT -Djava.security.auth.login.config=%CATALINA_HOME%/conf/jaas.config二:如何把liferay部署到自定义的context中,而不是ROOT绑定liferay的Tomcat例子步骤:1. 编辑文件pertieportal.ctx=/mycontext2.1 Liferay 4.3 and the professional (WAR) edition in previous versions:在tomcat中,可以在META-INF下创建context.xml文件: 2.2 Liferay version 4.2 and previous enterprise (EAR) edition:编辑liferay-portal.ear/META-INF/application.xml文件,设置如下: portal-web.war /mycontext /module3. 编辑web.xml文件 root_path /mycontext 4. 改变war包的名称为mycontext有写应用服务器不必5. 编辑htmlindex.html文件4.3.x版本的不必三:使不需要的portlet失效:在liferay-portlet-ext.xml文件中配置:false/false四:如何完全的隐藏一些portlet1. 用户无访问权限的portlet:在文件perties中修改:layout.show.portlet.access.denied=false或者在文件liferay-portlet-ext.xml中修改:false2. 处于失效状态的portlet在文件perties中修改:layout.show.portlet.inactive=false或者在文件liferay-portlet-ext.xml中修改:false这样将不再显示portlet的边框!五:如何在登陆portal系统后向session中设置一些对象或其他操作!1. 在perties文件中,覆盖并添加自己的处理类:login.events.post=com.liferay.portal.events.LoginPostAction,com.my_company.portal.events.LoginPostAction2. 其中自己的处理类应当继承com.liferay.portal.struts.Action,并需要有run()方法。public void run(HttpServletRequest req, HttpServletResponse res) throws ActionException3. 在run()方法中可以加入自己的处理的代码。六:如何显示hibernate的sql语句:在perties文件中设置:hibernate.show_sql=true七:Liferay中SearchContainer的使用方法在Liferay中,列表通常是使用SearchContainer来实现的,如BBS的栏目列表等。在Liferay的源代码中,JSP夹杂了大量的本应在Action中实现的代码,因此导致很难看懂。我尝试写一个Portlet,结果就在JSP处耗费了很长时间。 在此简单总结一下SearchContainer的用法,边写代码先写文档,内容有些不恰当。具体可参考message_boards/view.jsp中的代码。 7.1 概述作为一个条目的列表,应该包括几个方面的内容: l Table的标题行 l Table的内容 l 每一个条目允许的操作 l 分页 7.2 Table的标题行标题行相对比较简单,核心代码如下: List headerNames = new ArrayList(); headerNames.add(news.column); headerNames.add(news.columndescript); headerNames.add(news.childcolumns); headerNames.add(StringPool.BLANK); 其中注意两点: 1、 每个标题,应该是i18n的资源,需要在资源文件中添加内容。 2、 最后一行,是用来显示可能的操作按钮的,不需要标题行。 7.3 创建SearchContainer根据这个headerNames来创建SearchContainer。 首先需要生成一个PortletURL对象,并包括必要的参数 PortletURL portletURL = res.createRenderURL(); portletURL.setParameter(struts_action, /ext/news/columnadmin/view); portletURL.setParameter(columnId, columnId); 如果页面是分为多个Tab的,还需要将Tab也添加进去。 然后就可以创建SearchContainer SearchContainer searchContainer = new SearchContainer(req, null, null,column, SearchContainer.DEFAULT_DELTA, portletURL,headerNames, null); 检查源代码,SearchContainer函数的定义为 SearchContainer(RenderRequest req, DisplayTerms displayTerms, DisplayTerms searchTerms, String curParam, int delta, PortletURL iteratorURL, List headerNames, String emptyResultsMessage) 这一步同创建headerNames应该是可以互换的,用searchContainer.setHeaderNames()即可。 7.4 Table的内容主要由几个小步骤完成 7.4.1 设置总条数searchContainer.setTotal(total); 7.4.2 直接设置查询结果searchContainer.setResults(results) 变量是一个List,其中的每一个对象将会被用到下一个设置可执行操作的JSP中。 7.4.3 设置Table的显示条目List resultRows = searchContainer.getResultRows(); for (int i = 0; i results.size(); i+) NewsColumn cutColumn = (NewsColumn) results.get(i); / 生成新的一个显示行 ResultRow row = new ResultRow(cutColumn, cutColumn.getPrimaryKey() .toString(), i); / 设置URL PortletURL rowURL = res.createRenderURL(); rowURL.setWindowState(WindowState.MAXIMIZED); rowURL.setParameter(struts_action, /ext/news/columnadmin/view); rowURL.setParameter(columnId, cutColumn.getColumnId(); / 设置每一列的显示内容 row.addText(cutColumn.getName(), rowURL); row.addText(cutColumn.getDescription(), rowURL); row.addText(childCount), rowURL); / 设置每一个条目的可用操作 row.addJSP(right, SearchEntry.DEFAULT_VALIGN, *.jsp); resultRows.add(row); 7.5 每一个条目允许的操作通过row.addJSP(right, SearchEntry.DEFAULT_VALIGN, column_action.jsp)来调用JSP显示相应的操作。 在JSP中,通过下面的语句能够获取当前条目的 model 对象 ResultRow row = (ResultRow)request.getAttribute(WebKeys.SEARCH_CONTAINER_RESULT_ROW); MBCategory category = (MBCategory)row.getObject(); 拿到model之后,通过c:if test=%= MBCategoryPermission.contains 方式判断权限,如果允许操作,则首先生成相应的portletURL,然后显示icon图标。 c:if test= portlet:renderURL windowState= var=portletURL portlet:param name=redirect value= / portlet:param name=categoryId value= / liferay-ui:icon image=edit url= / 这部分代码涉及到Liferay的权限机制。 7.6 显示table和分页显示table很简单,在JSP中 liferay-ui:search-iterator searchContainer= / SearchC

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论