Liferay 6.1开发学习(十七):基于注解的SpringMVC portlet开发【转】

对于SpringMVCportlet中的使用,在Spring的官方文档中已经有说了详细的说明(在spring-framework-reference中的19章。),这里参考官方文档进行配置。

环境准备

Liferay版本:6.1.1 CE版本

Spring版本:3.2.0 GA

Liferay IDE: 1.6.1

开发步骤

一、导入SpringMVC portlet所需要的jar包。

§ spring-beans-3.2.0.RELEASE.jar

§ spring-context-3.2.0.RELEASE.jar

§ spring-core-3.2.0.RELEASE.jar

§ spring-expression-3.2.0.RELEASE.jar

§ spring-web-3.2.0.RELEASE.jar

§ spring-webmvc-3.2.0.RELEASE.jar

§ spring-webmvc-portlet-3.2.0.RELEASE.jar

二、新建一个Portlet插件开发的工程,可以使用Liferay IDE中的portlet创建向导建立一个普通的插件工程。

三、修改web.xml,在里面添加如下内容:

1.     <servlet>  

2.         <servlet-name>ViewRendererServlet</servlet-name>  

3.         <servlet-class>org.springframework.web.servlet.ViewRendererServlet</servlet-class>  

4.     </servlet>  

5.     <servlet-mapping>  

6.         <servlet-name>ViewRendererServlet</servlet-name>  

7.         <url-pattern>/WEB-INF/servlet/view</url-pattern>  

8.     </servlet-mapping>  

四、portlet.xml中的内容修改,portlet.xml中的主要内容如下,主要为portlet-class的内容,要使用springdispatcherPortlet,下面的init-param为非必须的,他配置的内容为当前portlet所对应的mvc配置信息的xml地址,如果不配置,则自动的在web-inf目录下面寻找名称和当前portlet-name一样的xml文件。

1.     <portlet-name>SpringMVC</portlet-name>  

2.     <display-name>SpringMVC</display-name>  

3.     <portlet-class>org.springframework.web.portlet.DispatcherPortlet</portlet-class>  

4.     <init-param>  

5.         <name>contextConfigLocation</name>  

6.         <value>/WEB-INF/SpringMVC-portlet.xml</value>  

7.     </init-param>  

8.     <expiration-cache>0</expiration-cache>  

9.     <supports>  

10.      <mime-type>text/html</mime-type>  

11.      <portlet-mode>view</portlet-mode>  

12.  </supports>  

五、springmvc的配置XML信息如下:SpringMVC-portlet.xml

1.     <?xml version="1.0" encoding="UTF-8"?>  

2.     <beans xmlns="http://www.springframework.org/schema/beans"  

3.         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"  

4.         xmlns:context="http://www.springframework.org/schema/context"  

5.         xmlns:mvc="http://www.springframework.org/schema/mvc"  

6.         xsi:schemaLocation="http://www.springframework.org/schema/beans   

7.             http://www.springframework.org/schema/beans/spring-beans-3.2.xsd   

8.             http://www.springframework.org/schema/context   

9.             http://www.springframework.org/schema/context/spring-context-3.2.xsd   

10.          http://www.springframework.org/schema/mvc    

11.          http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">  

12.             

13.      <context:component-scan base-package="com.huqiwen.portlet" />  

14.      <bean id="viewResolver"  

15.          class="org.springframework.web.servlet.view.InternalResourceViewResolver">  

16.          <property name="viewClass"  

17.              value="org.springframework.web.servlet.view.JstlView" />  

18.          <property name="prefix" value="/WEB-INF/jsp/" />  

19.          <property name="suffix" value=".jsp" />  

20.      </bean>  

21.  </beans>  

可以看到这里和普通的SpringMVC的配置没有什么区别。

六、编写SpringMVCcontroller类,如下:

1.     @Controller   

2.     @RequestMapping(value = "VIEW")   

3.     public class SpringPortlet {   

4.            

5.         @RenderMapping  

6.         public String view(Model model){   

7.             model.addAttribute("username""huqiwen");   

8.             return "view";   

9.         }   

10.         

11.      @RenderMapping(params = "action=edit")   

12.      public String edit(Model model){   

13.          model.addAttribute("edit""action=edit");   

14.          return "edit";   

15.      }   

16.  }   

说明:

@RequestMapping中的VIEW,代表当前的是portletVIEW模式,如果是EDIT模式,则将这里的VIEW换成edit即可。

@RenderMapping 默认对应的是portlet进入的时候执行的方法。

@RenderMapping(params = "action=edit")   这个请求的是对应于用户在页面中的请求,如JSP中有如下的portlet请求,则会进入到这个方法里面,这里param name可以自定义,不一定叫action,可以叫cmdop等均可

1.     <portlet:renderURL var="edit">   

2.         <portlet:param name="action" value="edit"/>   

3.     </portlet:renderURL>  

一个简单的SpringMVC portlt示例下载:点击我

Liferay中Portal.properties常用配置参数

Liferay中Portal.properties文件保存着Liferay很多的平台级的配置参数,通过在这里调整一些参数的配置信息,可以满足许多不同的需求。一般我们定义Portal.properties里面的配置文件是不直接修改的,按配置liferay可以加载以下路径下面的配置参数来覆盖默认的

§ include-and-override=portal-bundle.properties

§ include-and-override=${liferay.home}/portal-bundle.properties

§ include-and-override=portal-ext.properties

§ include-and-override=${liferay.home}/portal-ext.properties

§ include-and-override=portal-setup-wizard.properties

§ include-and-override=${liferay.home}/portal-setup-wizard.properties

§ include-and-override=portal-${easyconf:companyId}.properties

§ include-and-override=${liferay.home}/portal-${easyconf:companyId}.properties

§ include-and-override=${external-properties}

§ include-and-override=${liferay.home}/${external-properties}

也就是这些配置参数在上面的任一文件里面修改都可以。我们一般将自定义的配置参数放在下面的两个配置文件里面。

portal-setup-wizard.properties(在Liferay第一次运行的时候生成,默认是在liferay-portal-6.1.1-ce-ga2目录下面)

portal-ext.properties(在tomcat/webapps/ROOT/WEB-INF/classess下面,不存在可以自己创建)

定义Liferay.home

在上面可以看到上面有不少路径是引用的${liferay.home}这个路径,这个路径可以在配置参数里自己指定,如在portal-ext.properties里面添加

liferay.home=E:/code/liferay6.1/liferay-portal-6.1.1-ce-ga2

则就是将liferay.home的路径指向了E:/code/liferay6.1/liferay-portal-6.1.1-ce-ga2目录。

定义文件存储路径

liferay中的文件存储路径默认是保存在和omcat同级的data/document_library目录下面,如果想要自定义,可以修改以下的参数。

 dl.store.file.system.root.dir=${liferay.home}/data/document_library

这里定义的即为系统的文件存储路径,默认是和liferay.home的路径有关的,相对liferay.home的路径,当然也可以自定义会绝对路径,如

 dl.store.file.system.root.dir=E:/liferay/document_library

去掉我的公共页和私有页

Liferay默认会为每个用户建立一个公共页和私有页,其实这个是个人站点,但是在实际的使用中,有时候我们并不需要为每个用户都建立公共页和私有页,可以使用下面的参数禁用掉。

layout.user.private.layouts.enabled=false
layout.user.public.layouts.enabled=false

去掉用户第一次登录的时候的用户协议

如果我们的系统是在企业内部使用,在用户登录的时候一般不需要用户同意使用协议、用户协议,可以使用下面的参数禁用掉此协议。

terms.of.use.required= false

去掉用户第一次登录时的密码提示

Liferay默认在用户第一次登录的时候会提示用户,修改密码,但在实际的某些业务需求下,我们不需要这个提醒,可以使用下面的参数

users.reminder.queries.enabled=false

上面是之前写的,算是一个错误的描述。准确是在控制面板--密码策略里面进行调整。

users.reminder.queries.enabled=false

这个参数是调整,第一次登录的时候是否让用户输入找加密码的问题。

liferay使用数据源

liferay默认是使用的c3p0的配置,有时候我们希望能够使用应用中间件的数据源,如tomcat或者weblogic的数据源,而不使用c3p0的,可以在配置里面添加

jdbc.default.jndi.name=jdbc/LiferayPool

tomcatweblogic里面配置数据源的名称为jdbc/LiferayPool,则liferay即可调用应用中间件的数据源。

让没有权限的portlet隐藏掉

liferay默认情况下,如果某一个用户没有权限查看一个portlet,则会提示"你的角色无权限访问这一portlet",我们很多时候并不是想简单的有这个提示,而想让没有权限的用户看不到这个portlet,则可以在配置里面添加这个配置参数

layout.show.portlet.access.denied=false

上传文件的大小配置

使用下面的参数定义文件的上传大小配置,单位字节,下面的这个配置是10M

dl.file.max.size=10485760

Liferay的登录认证形式

liferay默认使用email作为用户的登录名,有时候我们可能需要使用screen name或者userid作为登录的用户名,可以使用下面的参数修改(也可以在后台控制面板处修改)

使用屏幕名称
company.security.auth.type=screenName
使用用户ID
company.security.auth.type=userId

用户的密码生成方式

Liferay默认情况下,在后台添加的用户的密码是动态生成的基于DES加密的,我们有时希望新添加的用户的密码都是一样的,则使用下面的配置,表示生成的密码是静态的,默认密码为111111

passwords.passwordpolicytoolkit.generator=static
passwords.passwordpolicytoolkit.static=111111

站点设置,用户设置,portal设置的分类

有时发现像liferay中的站点设置,用户设置,portal设置中有不少我们不想要的类别,如用户设置中的openid,社交网络等,站点设置里面的搜索引擎优化等,这些在有些企业内部的系统时,不需要这些类别,也可以通过配置来完成。

我配置的一些信息如下:

#站点设置
sites.form.update.main=details,site-url,site-template
#用户信息
users.form.my.account.main=details,password,organizations,sites,user-groups,roles
users.form.my.account.identification=addresses,phone-numbers,additional-email-addresses,websites
users.form.my.account.miscellaneous=display-settings,comments,custom-fields
#portal信息
company.settings.form.configuration=general,authentication,users,mail-host-names,email-notifications
company.settings.form.identification=addresses,phone-numbers,additional-email-addresses,websites
company.settings.form.miscellaneous=display-settings
#页面设置
layout.form.update=details,seo,look-and-feel,layout,javascript,custom-fields,advanced
layout.set.form.update=look-and-feel,logo,javascript,advanced

Liferay默认进入的站点

如果现在有多个站点,比如有组织机构站点,有社区站点,默认情况下我们在浏览器输入http://localhost:8080是进入的liferay创建的Guest的站点,如果现在我们想让在输入上面的地址的时候进入其他站点,怎么做呢?可以使用下面的配置参数

virtual.hosts.default.site.name=xxx

后面的xxx这个具体等于多少,要查看数据库表group_表,此表里面有许多的社区,在此表的name字段下面寻找我们要默认进入的站点名称,替换上面的xxx

注意:如果这里是中文字符,需要转换为unicode编码,如

virtual.hosts.default.site.name=\u5927\u5510\u6587\u5C71\u53D1\u7535\u6709\u9650\u516C\u53F8\u5185\u7F51 LFR_ORGANIZATION

你可能感兴趣的:(liferay)