0%

Liferay集成Struts2

本文将介绍使用struts2开发Liferay Portal。

开发环境

  • OS:ubuntu 12.04 64位
  • Liferay Portal:6.2.0-ce-ga1
  • Struts2:2.3.16.1

创建portlet

使用Liferay Portal Maven开发环境搭建文章中的步骤,创建一个sample-portlet项目。

集成struts2

pom.xml中添加struts2-portlet-plugin依赖

1
2
3
4
5
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-portlet-plugin</artifactId>
<version>2.3.16.1</version>
</dependency>

sample-portlet/src/main/resources目录下创建struts.xml文件,并添加以下内容。此项目不需要自己编写action类,使用struts自带的即可。

1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
<package name="sample-portlet" namespace="/sample-portlet" extends="struts-portlet-default">
<action name="view" class="com.opensymphony.xwork2.ActionSupport">
<result name="success">/WEB-INF/jsp/view.jsp</result>
</action>
</package>
</struts>

WEB-INF目录下创建jsp文件夹,并把在webapp目录下的view.jsp移动到jsp目录。现在项目的目录结构如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
.
├── pom.xml
├── src
│   └── main
│   ├── java
│   ├── resources
│   │   └── struts.xml
│   └── webapp
│   ├── css
│   │   └── main.css
│   ├── icon.png
│   ├── js
│   │   └── main.js
│   └── WEB-INF
│   ├── jsp
│   │   └── view.jsp
│   ├── liferay-display.xml
│   ├── liferay-plugin-package.properties
│   ├── liferay-portlet.xml
│   ├── portlet.xml
│   └── web.xml

修改portlet.xml中的内容以集成struts2,主要是使用org.apache.struts2.portlet.dispatcher.Jsr286Dispatcher替换com.liferay.util.bridges.mvc.MVCPortlet,再添加portlet需要运行action所在的namespace和默认执行的action名称等配置参数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?xml version="1.0"?>

<portlet-app ...>
<portlet>
<portlet-name>sample-portlet</portlet-name>
<display-name>sample-portlet</display-name>
<portlet-class>org.apache.struts2.portlet.dispatcher.Jsr286Dispatcher</portlet-class>
<init-param>
<!-- 对应struts.xml中package的namespace -->
<name>portletNamespace</name>
<value>/sample-portlet</value>
</init-param>
<init-param>
<!-- 对应struts.xml中action的name -->
<name>defaultViewAction</name>
<value>view</value>
</init-param>
<expiration-cache>0</expiration-cache>
.
.
.
</portlet>
</portlet-app>

编译打包并发布

sample-portlet目录下执行以下命令,如果之前没有下载过相关依赖,那么第一次运行时会下载所有依赖。

1
mvn clean package liferay:deploy

启动liferay portal的tomcat。启动完毕后,以管理员身份登录,添加应用程序,在示例分类下可以找到sample-portlet,添加至页面,即可显示。


全文完