我可以在liferay中为多个portlet只有一个控制器

时间:2015-06-29 12:14:53

标签: liferay liferay-6 liferay-aui

我在一个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类是什么,以及如何将不同的动作发送到同一个类。

1 个答案:

答案 0 :(得分:2)

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

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

你给出的代码片段是最好的例子,为什么其他一切都没有意义。