前言
SpringMVC使用起来是简单易懂,方便快捷。springmvc 在很早之前就开始提供对于JSR168的支持,同样的liferay的这个portal是实现了JSR 168和JSR268规范的,理论只要是提供对JSR 168或JSR268规范支持的MVC框架都可以用来开发Liferay portlet,像Struts1/struts2/SpringMVC等。
对于SpringMVC在portlet中的使用,在Spring的官方文档中已经有说了详细的说明(在第20章 Portlet MVC Framework),这里参考官方文档进行配置。
环境准备
Liferay版本:6.1.2 CE版本
Spring版本:3.2.0 GA
Liferay IDE::最新版
开发步骤
一建立工程
新建一个liferay Portlet插件开发的工程,可以使用Liferay IDE中的portlet创建向导建立一个普通的liferay project。这里我建立一个名为ExampleSpringMVCPro的liferay project。
二导入jar包
导入SpringMVC portlet所需要的jar包。
l spring-beans-3.2.0.RELEASE.jar
l spring-context-3.2.0.RELEASE.jar
l spring-core-3.2.0.RELEASE.jar
l spring-expression-3.2.0.RELEASE.jar
l spring-web-3.2.0.RELEASE.jar
l spring-webmvc-3.2.0.RELEASE.jar
l spring-webmvc-portlet-3.2.0.RELEASE.jar
把以上的jar包拷贝到工程的 docroot/lib 目录下。如图:
三、修改web.xml
修改web.xml,在里面添加如下内容:
如下图:
这里必须要设置ViewRenderServlet并且设置 servlet的地址映射。因为Springportlet在渲染视图时,它会用RequestDispatcher forward到ViewRenderServlet来完成这件事情。为了调用ViewRenderServlet,我们必须在web.xml中声明这个Servlet,并且url-pattern设置为/WEB-INF/servlet/view,这样我们的请求信息(包括视图和模型)就会全部包含在HttpServletRequest中,并且交给ViewRenderServlet的renderView()方法来完成具体的视图渲染工作。
四、portlet.xml添加portlet
portlet.xml中的内容修改,portlet.xml中的主要内容如下,主要为portlet-class的内容,要使用spring的dispatcherPortlet,下面的init-param为非必须的,他配置的内容为当前portlet所对应的mvc配置信息的xml地址,如果不配置,则自动在web-inf目录下面寻找名称和当前portlet-name一样的xml文件。
五、SpringMVC-portlet.xml 配置
springmvc的配置XML信息如下:SpringMVC-portlet.xml
这里和普通的SpringMVC的配置没有什么区别。
六、liferay-display.xml
这里设置portlet显示在那个分类下,设置如下:
七、编写portlet 实体类
编写SpringMVC的controller类,如下:
说明:
@RequestMapping中的VIEW,代表当前的是portlet的VIEW模式,如果是EDIT模式,则将这里的VIEW换成edit即可。
@RenderMapping 默认对应的是portlet进入的时候执行的方法。
@RenderMapping(params = "action=edit") 这个请求的是对应于用户在页面中的请求,如JSP中有如下的portlet请求,则会进入到这个方法里面,这里param name可以自定义,不一定叫action,可以叫cmd,op等均可。如下图:
八、部署和运行
在liferay ide 中,打开 windows\show view\other,输入ant,调出ant工具。如图:
把该项目路径下的 build.xml拖拽到 ant工具里。双击deploy,当console出现“BUILD SUCCESSFUL”字样,表示该项目已经打包成功并且放置在bundles\deploy 文件夹下。这里的路径为
把生成的ExampleSpringMVCPro-portlet-6.1.1.1.war复制到liferay实例的deploy文件夹下并启动tomcat,liferay会自动完成该portlet的部署。
如下图:


![clip_image002[5] clip_image002[5]](http://images0.cnblogs.com/blog/563903/201403/061118028468832.jpg)








浙公网安备 33010602011771号