读书人

Liferay二次开发示范

发布时间: 2012-11-15 15:16:15 作者: rapoo

Liferay二次开发示例
Liferay是经过商业考验的开源Portal项目,它自带了丰富的Portlet和例子。?Progress is the activity of today and the assurance of tomorrow .(Emerson, American thinker )进步是今天的活动、明天的保证。 (美国思想家 家默生)?Liferay Portal企业版,构建在Portlet API(JSR 168之上)并且有为用户提供了丰富的Portlets。?I.HelloWorld?a.这个Portlet定义在 /portal-web/docroot/WEB-INF/portlet.xml中:?<portlet>??? <portlet-name>47</portlet-name>??? <display-name>Hello World</display-name>??? <portlet-class>?????? com.liferay.portlet.helloworld.HelloWorldPortlet??? </portlet-class>??? <expiration-cache>0</expiration-cache>??? <supports>??????? <mime-type>text/html</mime-type>??? </supports>??? <portlet-info>??????? <title>Hello World</title>??????? <short-title>Hello World</short-title>??????? <keywords>Hello World</keywords>??? </portlet-info>??? <security-role-ref>??????? <role-name>Power User</role-name>??? </security-role-ref>??? <security-role-ref>??????? <role-name>User</role-name>??? </security-role-ref></portlet>?这个Portlet的唯一标识:47.?这个HelloWorldPortlet扩展自 Javax.portlet.GenericPortlet.源代码:source 它仅仅是打印出 Hello World字样。?标题定义在Portlet-info中。用户必须拥有Power User或者是User权限才能访问这个Portlet.指定何种roles可以在运行期通过Admin Portlet来指定。?b.可以为Porltet添加额外的定义: /portal-web/docroot/WEB-INF/liferay-portlet.xml?<portlet id="47" struts-path="hello_world" narrow="true" />?id值是上面定义过的Portlet的唯一标识。?Struts-path值告诉Struts 所有包含Http://localhost/c/hello_world/*的请求都属于这个Portlet自己的域。?narrow值,如果为真,意味着在窄行中现实这个Portlets。当然,可以通过Admin portlet来在运行期修改。?c.这个portlet显示的信息在/portal-web/docroot/WEB-INF/liferay-display.xml这容许用户通过个性化定制页面来添加它。?<category name="category.test">??? <portlet id="47" />??? <portlet id="48" /></category>?当用户转动个性化页面,点击一个分类来选择一个porltet,那么你可以在关键词为category.test的分类中找到这个portlet。这个关键词的值可以定义在/portal-ejb/classes/content/Language.properties.?category.test=Test?II.IFrame?a.它定义在/portal-web/docroot/WEB-INF/portlet.xml?<portlet>??? <portlet-name>48</portlet-name>??? <display-name>IFrame</display-name>??? <portlet-class>com.liferay.portlet.IFramePortlet</portlet-class>??? <expiration-cache>0</expiration-cache>??? <supports>??????? <mime-type>text/html</mime-type>??????? <portlet-mode>edit</portlet-mode>??? </supports>??? <resource-bundle>com.liferay.portlet.StrutsResourceBundle</resource-bundle>??? <portlet-preferences>??????? <preference>??????????? <name>src</name>??????????? <value>http://www.gfa.org</value>??????? </preference>??????? <preference>??????????? <name>auth</name>??????????? <value>false</value>??????? </preference>??????? <preference>??????????? <name>auth-type</name>??????????? <value>basic</value>??????? </preference>??????? <preference>??????????? <name>form-method</name>??????????? <value>post</value>??????? </preference>??????? <preference>??????????? <name>user-name</name>??????????? <value></value>??????? </preference>??????? <preference>??????????? <name>password</name>??????????? <value></value>??????? </preference>??????? <preference>??????????? <name>hidden-variables</name>??????????? <value>var1=hello;var2=world</value>??????? </preference>??? </portlet-preferences>??? <security-role-ref>??????? <role-name>Power User</role-name>??? </security-role-ref>??? <security-role-ref>??????? <role-name>User</role-name>??? </security-role-ref></portlet>?IFramePortlet类继承自 javax.portlet.GenericPortlet。它们代码:source 它仅仅是打印一个IFRAME tag的代码来应用外部站点的内容。?scr 指定绑定到外部资源的地址。?auth:需要认证否?auth-type 可以选择basic或者是form,认证方式,是通过添加URL信息认证还是需要表单认证。?form-method 值可以设置为get或者是post。?user-name认证所需的用户名?password:密码?b.标题通过StrutsResourceBundle取得,配置在 /portal-ejb/classes/content/Language.properties.?javax.portlet.title.48=IFrame.?c.额外的配置在/portal-web/docroot/WEB-INF/liferay-portlet.xml中:?<portlet id="48" struts-path="iframe" />

读书人网 >软件架构设计

热点推荐