2015-06-29 27 views
1

我在一個portlet中有10個不同的子portlet。在portlet.xml文件中,我的配置是::Liferay中只能有一個控制器用於多個portlet

<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

你的意思是你在一個_plugin_中有10個不同的_portlets_? _答案我可以在liferay_中爲多個Portlet只有一個控制器_yes_,但是我不明白你的問題是什麼?你是否試圖按照你描述的方式來實現它,並遇到問題? –

+0

我只想知道'Portlet-class'的值應該爲每個portlet編寫單獨的類嗎? – Pranoti

+1

@Nisha絕對不是......將同一個類聲明爲門戶類是非常常見的(正如Tobias所寫,Liferay將爲每個portlet創建不同的實例),因爲常見的框架(如Spring-mvc或LR本身)提供一個(或幾個)類(例如您使用的LR oob MVCPortlet)來包裝Portlet生命週期,讓您只編寫代碼(無需編寫doview或擔心在Portlet中分派請求) –

回答

2

是的,您可以在插件中爲不同的portlet使用相同的portlet類。

門戶容器(Liferay)將爲每個portlet創建一個該類的實例,並使用正確的配置對其進行初始化。

你給出的片段就是最好的例子,爲什麼其他一切都沒有意義。

相關問題