[开发] 插件方式与扩展方式开发portlet
brmrk
2009-03-12
liferay的界面真是丑啊!!!!!
刚开始,只能从hello world开始做。 插件方式: 先新建一个java工程。 单单一个简单的portlet,三个文件就可以描述了。分别是liferay-display.xml,liferay-portlet.xml,portlet.xml portlet.xml配置文件主要要做的改动在这里: <portlet> <portlet-name>名字</portlet-name> <display-name>名字</display-name> <portlet-class>自己的java类名,继承javax.portlet.GenericPortlet</portlet-class> <init-param> <name>只是名字而已</name> <value>/jsp名</value> </init-param> liferay-portlet.xml的配置: <liferay-portlet-app> <portlet> <portlet-name>跟上面一样的名字</portlet-name> <instanceable>true</instanceable> </portlet> liferay-display.xml: <display> <category name="名字"> <portlet id="上面的名字"></portlet> </category> </display> 在java文件里重写方法,edit,help,view,init等。 将jsp页面跟WEB-INF一起打成war包,然后登录,点增加应用(add application)后,点最下面的install more applications增加我们刚做好的应用。在加载的页面中,点upload file标签,点浏览按钮,加入我们刚打的war包,最后install。 扩展方式: 描述文件变成5个,因为用了struts。liferay-display.xml,liferay-portlet-ext.xml,portlet-ext.xml,structs-config.xml,tiles-defs.xml 打开portlet-ext.xml,加入下面的文字: <portlet> <portlet-name>名字</portlet-name> <display-name>显示名字</display-name> <portlet-class>com.liferay.portlet.StrutsPortlet</portlet-class> <init-param> <name>名字</name> <value>/ext/自建文件夹名字/view</value> </init-param> 接着我们打开liferay-portlet-ext.xml,在 <liferay-portlet-app></liferay-portlet-app> 中间添加如下内容: <portlet> <portlet-name>上面名字</portlet-name> <struts-path>ext/上面文件夹名字</struts-path> <use-default-template>false</use-default-template> </portlet> 接着打开struts-config.xml 加入以下部分: <action path="/ext/上面文件夹名字/view" forward="portlet.ext.my_portlet.view" /> 此处的path应与portlet-ext.xml中的value相同 下一步,打开tiles-defs.xml,加入以下部分: <definition name="portlet.ext.文件夹名字" extends="portlet" /> <definition name="portlet.ext.文件夹名字.view" extends="portlet.ext.上面portlet名字"> <put name="portlet_content" value="/portlet/ext/上面文件夹名字/view.jsp" /> </definition> 在ext\ext-web\docroot\html\portlet\ext路径下新建一个名为my_portlet的文件夹,然后我们新建一个名为view.jsp的文件,内容如下: Hello World! 然后点添加应用就能看见它了 最后说下,portlet的运行过程。 首先分析portlet-ext.xml找到<value>/ext/自建文件夹名字/view</value>,然后对应struts里边的<action path="/ext/上面文件夹名字/view" forward="portlet.ext.文件夹名字.view" />然后forward到tiles-defs.xml里面找到jsp路径,成功。 表面上来看区别,插件开发跟扩展开发的区别在于扩展看法不用自己建java文件,别的好像没大区别。但是插件开发做的是一个独立的 web 应用,它可以单独布署到应用服务器上,同时它又是 Liferay 的一个(或一组)Portlet,这要求这个单独的应用和 Liferay 应用使用同一个类装载器(class loader),也就是多个 web 应用共享一个类装载器。扩展开发就没有这些问题。 |