我在一个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类是什么,以及如何将不同的动作发送到同一个类。
答案 0 :(得分:2)
是的,您可以为插件中的不同portlet使用相同的portlet类。
门户网站容器(Liferay)将为每个portlet创建该类的一个实例,并使用正确的配置对其进行初始化。
你给出的代码片段是最好的例子,为什么其他一切都没有意义。