java - Liferay : Configuring Multiple Spring MVC Portlets in one liferay plugin project with one common controller and multiple landing pages

标签 java spring spring-mvc liferay-6

我正在liferay中开发基于Spring MVC的portlet。基本上我想在单个 liferay 项目本身中配置和维护 2 或 3 个 portlet。有人可以指导我进行相同的配置吗?就像 portlet.xml、spring 配置和 web 配置(如果需要)的配置代码。我只需要为所有 portlet 配置一个默认 Controller ,这样每个 portlet 就会登陆不同的登陆页面。

有人知道如何配置这些 portlet 吗?任何建议都会有帮助。

提前致谢。

最佳答案

据我了解,您希望在一个 .war 文件中配置多个 portlet。这非常简单,您所需要做的就是在几个 xml 文件中正确配置它们。下面我为您准备了在 6.2 liferay 版本中定义 3 个 portlet 所需的几个配置文件:

liferay-display.xml

<?xml version="1.0"?>
<!DOCTYPE display PUBLIC "-//Liferay//DTD Display 6.2.0//EN" "http://www.liferay.com/dtd/liferay-display_6_2_0.dtd">

<display>
    <category name="category.amg">
        <portlet id="first-portlet" />
        <portlet id="second-portlet" />
        <portlet id="third-portlet" />
    </category>
</display>

liferay-portlet.xml

 <?xml version="1.0"?>
<!DOCTYPE liferay-portlet-app PUBLIC "-//Liferay//DTD Portlet Application 6.2.0//EN" "http://www.liferay.com/dtd/liferay-portlet-app_6_2_0.dtd">

<liferay-portlet-app>
    <portlet>
        <portlet-name>first-portlet</portlet-name>
        <icon>/icon.png</icon>
        <instanceable>true</instanceable>
        <private-request-attributes>false</private-request-attributes>
        <requires-namespaced-parameters>false</requires-namespaced-parameters>
        <render-weight>1000</render-weight>
    </portlet>
    <portlet>
        <portlet-name>second-portlet</portlet-name>
        <icon>/icon.png</icon>
        <instanceable>true</instanceable>
        <private-request-attributes>false</private-request-attributes>
        <requires-namespaced-parameters>false</requires-namespaced-parameters>
        <render-weight>1000</render-weight>
    </portlet>
    <portlet>
        <portlet-name>third-portlet</portlet-name>
        <icon>/icon.png</icon>
        <instanceable>false</instanceable>
        <private-request-attributes>false</private-request-attributes>
        <requires-namespaced-parameters>false</requires-namespaced-parameters>
        <render-weight>1000</render-weight>
    </portlet>
    <role-mapper>
        <role-name>administrator</role-name>
        <role-link>Administrator</role-link>
    </role-mapper>
    <role-mapper>
        <role-name>guest</role-name>
        <role-link>Guest</role-link>
    </role-mapper>
    <role-mapper>
        <role-name>power-user</role-name>
        <role-link>Power User</role-link>
    </role-mapper>
    <role-mapper>
        <role-name>user</role-name>
        <role-link>User</role-link>
    </role-mapper>
</liferay-portlet-app>

portlet.xml

    <?xml version="1.0" encoding="UTF-8"?>
<portlet-app version="2.0"
    xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd">
    <portlet>
        <portlet-name>first-portlet</portlet-name>
        <display-name>first-portlet</display-name>
        <portlet-class>org.springframework.web.portlet.DispatcherPortlet</portlet-class>
        <init-param>
            <name>contextConfigLocation</name>
            <value>/WEB-INF/context/first-portlet.xml</value>
        </init-param>
        <init-param>
            <name>check-auth-token</name>
            <value>false</value>
        </init-param>
        <supports>
            <mime-type>text/html</mime-type>
            <portlet-mode>view</portlet-mode>
            <portlet-mode>edit</portlet-mode>
        </supports>
        <supported-locale>pl</supported-locale>
        <supported-locale>en</supported-locale>
        <resource-bundle>portlets-names.first-portlet</resource-bundle>
        <portlet-info>
            <title>first portlet</title>
            <short-title>first</short-title>
            <keywords>first</keywords>
        </portlet-info>
        <security-role-ref>
            <role-name>administrator</role-name>
        </security-role-ref>
        <security-role-ref>
            <role-name>guest</role-name>
        </security-role-ref>
        <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>
        <portlet-name>second-portlet</portlet-name>
        <display-name>second-portlet</display-name>
        <portlet-class>org.springframework.web.portlet.DispatcherPortlet</portlet-class>
        <init-param>
            <name>contextConfigLocation</name>
            <value>/WEB-INF/context/second-portlet.xml</value>
        </init-param>
        <init-param>
            <name>check-auth-token</name>
            <value>false</value>
        </init-param>
        <supports>
            <mime-type>text/html</mime-type>
            <portlet-mode>view</portlet-mode>
            <portlet-mode>edit</portlet-mode>
        </supports>
        <supported-locale>pl</supported-locale>
        <supported-locale>en</supported-locale>
        <resource-bundle>portlets-names.second</resource-bundle>
        <portlet-info>
            <title>second portlet</title>
            <short-title>second</short-title>
            <keywords>second</keywords>
        </portlet-info>
        <security-role-ref>
            <role-name>administrator</role-name>
        </security-role-ref>
        <security-role-ref>
            <role-name>guest</role-name>
        </security-role-ref>
        <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>
        <portlet-name>third-portlet</portlet-name>
        <display-name>third-portlet</display-name>
        <portlet-class>org.springframework.web.portlet.DispatcherPortlet</portlet-class>
        <init-param>
            <name>contextConfigLocation</name>
            <value>/WEB-INF/context/third-portlet.xml</value>
        </init-param>
        <init-param>
            <name>check-auth-token</name>
            <value>false</value>
        </init-param>
        <supports>
            <mime-type>text/html</mime-type>
            <portlet-mode>view</portlet-mode>
        </supports>
        <supported-locale>pl</supported-locale>
        <supported-locale>en</supported-locale>
        <resource-bundle>portlets-names.third</resource-bundle>
        <portlet-info>
            <title>third portlet</title>
            <short-title>third</short-title>
            <keywords>third</keywords>
        </portlet-info>
        <security-role-ref>
            <role-name>administrator</role-name>
        </security-role-ref>
        <security-role-ref>
            <role-name>guest</role-name>
        </security-role-ref>
        <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-app>

还要确保为 portlet.xml 中定义的每个 portlet 添加上下文文件

这就是树,它最终应该是 3 个 portlet 的样子

.
├── main
│   ├── java
..... your java sources.....
.....................
│   ├── resources
│   │   ├── first-portlet_en_US.properties
│   │   ├── first-portlet_pl_PL.properties
│   │   ├── first-portlet.properties
│   │   ├── second-friendly-url-routes.xml
│   │   ├── second-portlet_en_US.properties
│   │   ├── second-portlet_pl_PL.properties
│   │   ├── second-portlet.properties
│   │   ├── third-friendly-url-routes.xml
│   │   ├── third-portlet_en_US.properties
│   │   ├── third-portlet_pl_PL.properties
│   │   ├── third-portlet.properties
│   │   ├── portlet.properties
│   │   ├── portlets-names
│   │   │   ├── first_en_US.properties
│   │   │   ├── first_pl_PL.properties
│   │   │   ├── first.properties
│   │   │   ├── second_en_US.properties
│   │   │   ├── second_pl_PL.properties
│   │   │   ├── second.properties
│   │   │   ├── third_en_US.properties
│   │   │   ├── third_pl_PL.properties
│   │   │   ├── third.properties
│   │   └── resource-actions
│   │       └── default.xml
│   └── webapp
│       ├── css
│       │   └── third-uploader.css
│       ├── icon.png
│       └── WEB-INF
│           ├── context
│           │   ├── first-portlet.xml
│           │   ├── common.xml
│           │   ├── second-portlet.xml
│           │   └── third-portlet.xml
│           ├── jsp
│           │   ├── first
│           │   │   ├── article-details-view.jsp
│           │   │   ├── first-edit.jsp
│           │   │   └── first-view.jsp
│           │   ├── second
│           │   │   ├── second-details-view.jsp
│           │   │   ├── second-edit.jsp
│           │   │   └── second-list-view.jsp
│           │   ├── init.jsp
│           │   └── third
│           │       ├── third-filter-view.jsp
│           │       ├── third-more-page-view.jsp
│           │       ├── third-view.jsp
│           │       └── uploader
│           │           └── uploader-view.jsp
│           ├── liferay-display.xml
│           ├── liferay-plugin-package.properties
│           ├── liferay-portlet.xml
│           ├── log4j.properties
│           ├── portlet.xml
│           └── web.xml
└── test

关于java - Liferay : Configuring Multiple Spring MVC Portlets in one liferay plugin project with one common controller and multiple landing pages,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27497494/

相关文章:

spring - 在 spring mvc3 中同时使用 @RequestBody 和 @RequestParam

java - 同步块(synchronized block)和方法未按预期工作

java - 如何使(加载)图像覆盖面板

java - 示例 Spring OAuth2.0 服务器的curl 出错?

java - mybitis运行更新sql错误

java - 无法使用 Spring MVC 和 Hibernate 删除

java - 我第一次使用 Eclipse 时遇到以下错误

java - 我的代码中存在未知错误

java - 使用 JSON 进行 Spring Security 错误处理

spring-boot - 如何配置 Spring boot Web 应用程序服务器来服务器外部内容并使用默认资源目录?