LifeRay学习记录

1.LifeRay的知识学习(越靠前推荐度越高):

  1. 国内某一对LifeRay较为详细的介绍,了解基本知识点非常有帮助,文章点此
  2. 学习It,当然少不了国外的好书籍,这里推荐《Liferay User Interface Development》,对于开发lifeRay的模块很有指导作用,电子版请看附件(额,不知道如何上传);
  3. LifeRay的官方文档,排在最后,因为个人觉得质量一般,作为参考未尝不可。至于国内的《Liferay Portal 6.1门户网站建设最佳实践》一书,纯粹是翻译了官方的用户指南,对liferay开发帮助不大。

2.lifeRay与struts2的整合:

以下几点乃经验积累:

  在portlet插件工程里整合strut2时,不要直接从strut2官网上下载的full版本,然后全部的jar包都放到插件工程的lib里面,否则将会有n多不应该出现的问题(说是不应该是因为这些问题都与lifeRay无关),时间证明,以下jar包可以支持整合开发:

<component name="libraryTable">
<library name="Struts 2-2.3.20" type="struts2">
<properties version="2.3.20" />
<CLASSES>
<root url="jar://$PROJECT_DIR$/lib/ognl.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/commons-fileupload.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/xwork-core.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/commons-lang.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/commons-io.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/asm-commons.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/asm-tree.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/asm.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/struts2-core.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/freemarker.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/javassist.jar!/" />

<root url="jar://$PROJECT_DIR$/lib/struts2-portlet-plugin-2.3.20.jar!/" />

</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>

请注意strut2的版本为2.3.20。

  成功编译打包插件工程(这里指portlet)后,并配置了某个mode的default页面(这里已view为例)如:

<init-param>
  <name>defaultViewAction</name>
  <value>index</value>
</init-param>

  在页面上添加该portlet会报错说找不到action,借鉴常规web的方法,在WEB-INF路径下假设index.action即可,如图 :

  当提交参数到action时,如果出现Reject process action for http://localhost:8080/xxx的error,在插件工程的liferay-portlet.xml里面,添加<add-default-resource>true</add-default-resource>配置即可,如图:

  至于为何,请看:

<!--
If the add-default-resource value is set to false and the portlet does not
belong to the page but has been dynamically added, then the user will not have
permissions to view the portlet. If the add-default-resource value is set to
true, the default portlet resources and permissions are added to the page, and
the user can then view the portlet. This is useful (and necessary) for portlets
that need to be dynamically added to a page. However, to prevent security loop
holes, the default value is false.

The properties "portlet.add.default.resource.check.enabled" and
"portlet.add.default.resource.check.whitelist" in portal.properties allow
security checks to be configured around this behavior.
-->
<!ELEMENT add-default-resource (#PCDATA)>

  

  发觉从页面提交上来的参数,在action里面找不到时,有如下几个解决办法:

1. In your JSP, add <portlet:namespace/> in front of parameters names.
2. use Alloy elements
3. In liferay-portlet.xml add below tag:<requires-namespaced-parameters>false</requires-namespaced-parameters>

  以上办法,我只证实了第三种,确实可行,具体配置请看上图。

3.lifeRay的Two phases of Portlet Execution

  The reason why two phases are needed is because a portlet does not own a whole HTML page, it only generates a fragment of it. The portal that holds the portlet is the one responsible for generating the page by invoking one or several portlets and adding some additional HTML around them。

时间: 2024-10-09 17:44:59

LifeRay学习记录的相关文章

Python学习记录-2016-12-17

今日学习记录 模块: import os#导入os模块 import sys#导入sys模块 os.system("df -h")#执行df -h命令 cmd_res = os.popen("df -h").read()#将命令的返回结果赋值给cmd_res,如果不加入.read()会显示命令的返回加过在内存的位置 print(sys.path)#显示系统变量路径,一般个人模块位于site-packages下,系统模块位于lib下 print(sys.argu[2]

Objc基础学习记录5

NSMutableString类继承的NSString类. NSMutableString是动态的字符串. 1.appendingString 方式: 向字符串尾部添加一个字符串. 2.appendingFormat:可以添加多个类型的字符串. int,chat float,double等 3.stringWithString 创建字符串, 4.rangeOfString 返回str1在另一个字符串中的位置. 5.NSMakeRange(0,3) 字符串0位到3位. 6.deleteCharac

Windows API 编程学习记录&lt;二&gt;

恩,开始写Windows API编程第二节吧. 上次介绍了几个关于Windows API编程最基本的概念,但是如果只是看这些概念,估计还是对Windows API不是很了解.这节我们就使用Windows API 让大家来了解下Windows API的用法. 第一个介绍的Windows API 当然是最经典的MessageBox,这个API 的作用就是在电脑上显示一个对话框,我们先来看看这个API的定义吧: int WINAPI MessageBox(HWND hWnd, LPCTSTR lpTe

Windows API 编程学习记录&lt;三&gt;

恩,开始写API编程的第三节,其实马上要考试了,但是不把这节写完,心里总感觉不舒服啊.写完赶紧去复习啊       在前两节中,我们介绍了Windows API 编程的一些基本概念和一个最基本API函数 MessageBox的使用,在这节中,我们就来正式编写一个Windows的窗口程序. 在具体编写代码之前,我们必须先要了解一下API 编写窗口程序具体的三个基本步骤:             1. 注册窗口类:             2.创建窗口:             3.显示窗口: 恩,

Python学习记录day6

Python学习记录day6 学习 python Python学习记录day6 1.反射 2.常用模块 2.1 sys 2.2 os 2.3 hashlib 2.3 re 1.反射 反射:利用字符串的形式去对象(默认)中操作(寻找)成员 cat commons.py #!/usr/bin/env python#_*_coding:utf-8_*_''' * Created on 2016/12/3 21:54. * @author: Chinge_Yang.''' def login(): pr

Python学习记录-2016-11-29

今日学习记录: 心灵鸡汤: 要有合适自己的目标,一个目标一个目标实现,切忌好高骛远: 最好的投资就是投资自己: 实现梦想 学习,学习,再学习: Talk is cheap. 从本身而言,余三十而立之年,从事测试行业7七年有余,一年半华为外包路由器,两年无线wifi测试,一年半网管软件测试,一年自动化测试经理,推行公司自动化测试进程,从开始的TCL,到现在的python,工欲善其事必先利其器,所以自己来学习,总体我认为我的目标是一直前进的,不断变化的,但是方向并没有大的错误,有些累,所以近期有些懈

程序的机械级表示学习记录

程序的机械级表示学习记录 X86的三代寻址方式 DOS时代的平坦模式,不区分用户空间和内核空间,很不安全. 8086的分段模式. IA32的带保护模式的平坦模式. 对于机械级编程的两种重要抽象 ISA:机械级程序的格式和行为,定义为指令集体系结构,它定义了处理器状态.指令的格式,以及每条指令对状态的影响. 虚拟地址:机器级程序使用的存储器地址,提供的存储器模型看上去是一个非常大的数组.存储器系统的实际实现是将多个硬件存储器和操作系统软件组合起来的. 在GCC中获得汇编代码与反汇编 获得汇编代码:

python 系统地学习记录

由头: python值得一学. 尝试一下写学习记录,看看效果. 1.记录一些不熟悉或者重要的知识点. 2.记录一些遇到的问题,标签 Question. 书:python基础教程(第2版) Chapter 1:基础知识 本章的内容熟悉即可. 比较重要的是字符串,单双引号转义,str,repr... Time 1.5 h  2015.8.31 23:09 版权声明:本文为博主原创文章,未经博主允许不得转载.

Java 静态内部类与非静态内部类 学习记录.

目的 为什么会有这篇文章呢,是因为我在学习各种框架的时候发现很多框架都用到了这些内部类的小技巧,虽然我平时写代码的时候基本不用,但是看别人代码的话至少要了解基本知识吧,另外到底内部类应该应用在哪些场合,我并不是很清楚,留下一些值得思考的问题作为记录,说不定以后能自己来填.于是就会有这篇文章啦. 常规使用方法我也不想介绍,网上一大把,我就说说比较容易错的,值得注意的地方. 注意 这篇文章只是分享一下我对内部类的一些研究与困惑吧,说不定对大家有帮助,说不定能引导大家一起思考学习.Java语法知识其实