【问题标题】:Can I have only one controller for multiple portlets in liferay我可以在 liferay 中只有一个控制器用于多个 portlet
【发布时间】:2015-06-29 21:33:07
【问题描述】:

我在一个 portlet 中有 10 个不同的子 portlet。在 portlet.xml 文件中我的配置是::

<portlet>
    <portlet-name>portletA</portlet-name>
    <display-name>portletA</display-name>
    <portlet-class>com.liferay.util.bridges.mvc.MVCPortlet</portlet-class>
    <init-param>
        <name>view-template</name>
        <value>/view-a.jsp</value>
    </init-param>
    <expiration-cache>0</expiration-cache>
    <supports>
        <mime-type>text/html</mime-type>
    </supports>
    <portlet-info>
        <title>A</title>
        <short-title>A</short-title>
        <keywords>A</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>PortletB</portlet-name>
    <display-name>PortletB</display-name>
    <portlet-class>com.liferay.util.bridges.mvc.MVCPortlet</portlet-class>
    <init-param>
        <name>view-template</name>
        <value>/view-b.jsp</value>
    </init-param>
    <expiration-cache>0</expiration-cache>
    <supports>
        <mime-type>text/html</mime-type>
    </supports>
    <portlet-info>
        <title>B</title>
        <short-title>B</short-title>
        <keywords>B</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 编写相同的代码。 在 View 中,我必须编写一种操作方法,这对于所有 portlet 都是相同的。我怎样才能做到这一点。我正在考虑编写@doview,但我不确定在这种情况下我的 portlet 类是什么以及如何将不同的操作发送到同一个类。

【问题讨论】:

  • 你的意思是在一个插件中有10个不同的portletLiferay 中的多个portlet 是否可以只有一个控制器 的答案是是的,但我不明白您的问题是什么?您是否尝试按照您描述的方式实施它并遇到问题?
  • 我只是想知道 'Portlet-class' 的值应该是什么 我需要为每个 portlet 编写单独的类吗?
  • @Nisha 绝对不是...将相同的类声明为门户类是很常见的(正如 Tobias 所写,Liferay 将为每个 portlet 创建不同的实例),因为常见的框架(例如 Spring -mvc 或 LR 本身)提供一个(或几个)类(例如您使用的 LR oob MVCPortlet)来包装 portlet 生命周期,让您只编写代码(无需编写 doview 或担心调度portlet 中的请求)

标签: liferay liferay-6 liferay-aui


【解决方案1】:

是的,您可以为插件中的不同 portlet 使用相同的 portlet 类。

门户容器 (Liferay) 将为每个 portlet 创建该类的一个实例,并使用适当的配置对其进行初始化。

你给定的 sn-p 是最好的例子,为什么其他一切都没有意义。

【讨论】:

    猜你喜欢
    • 2015-02-14
    • 1970-01-01
    • 1970-01-01
    • 2013-06-17
    • 1970-01-01
    • 1970-01-01
    • 2013-04-09
    • 2017-09-30
    • 1970-01-01
    相关资源
    最近更新 更多