2016-11-22 54 views
1

我有一些portlet的liferay門戶。 Portlet有例如一些動作:從外部應用程序調用Portlet動作

@RenderMapping(params = "action=displayHome") 
public String displayHome(final RenderRequest request, final RenderResponse response, final ModelMap map) { 

    return "home"; 
} 

裏面的liferay我可以使用這個動作,一切工作正常。但!我有第二個應用程序(正常春季mvc休眠等),我需要調用此操作。 Srsly我不知道如何做到這一點。誰能幫我?

我創建的路由與文件:

<route> 
    <pattern>/test_pattern</pattern> 
    <implicit-parameter name="action">testAction</implicit-parameter> 

    <implicit-parameter name="p_p_lifecycle">0</implicit-parameter> 
    <implicit-parameter name="p_p_id">xxx_WAR_xxxportlet_INSTANCE_73iYU2pK0li</implicit-parameter> 
    <implicit-parameter name="p_p_state">normal</implicit-parameter> 
    <implicit-parameter name="p_p_mode">view</implicit-parameter> 
    <implicit-parameter name="p_p_col_id">column-1</implicit-parameter> 
    <implicit-parameter name="p_p_col_count">1</implicit-parameter> 
</route> 

我有問題,這是行不通的。總是送我到實際的頁面 - >動作不叫:/

回答

1
  • 選項1 - 從頁面,您可以使用它,並粘貼在你的Spring應用程序複製的URL。 缺點 - 門戶網站中的許多事情可能發生變化,導致網址更改,您的應用程序不再工作。

  • 選項2 - 瞭解如何構建網址並從您的Spring應用程序生成網址。 下行 - 門戶網址是複雜的,長期(沒有在這裏有足夠的空間來描述所有細節選項)

  • 選項3 - 生成您的Portlet Fiendly URL(s)和使用,在你的Spring應用程序。 下行 - 將停止工作,如果你移動組件到不同的頁面)

  • 選項4 - 不要單獨使用的portlet,使用本地/遠程服務+門戶代替。把你的邏輯在當地的服務,通過門戶的時候調用它本地和通過遠程服務形式的其他應用程序(甚至是移動的)

+0

我會盡量選擇3.但是是<友好的URL的路由>問題不能老是:

portlet中

我們可以關閉請參閱xml文件。可能是maven配置的問題嗎? –

+0

恐怕我不明白「無法看到xml文件」是什麼意思。請提供更多詳情,包括您的Liferay版本。 –

+0

我已經解決了一個問題。我的錯! –

0

解決方案: 的Liferay-portlet.xml中:

<friendly-url-mapper-class>com.liferay.portal.kernel.portlet.DefaultFriendlyURLMapper</friendly-url-mapper-class> 
    <friendly-url-mapping>xxx_mapping</friendly-url-mapping> 
    <friendly-url-routes>config/xxx-friendly-url-routes.xml</friendly-url-routes> 
    <instanceable>false</instanceable> 

航線資源/配置:

<routes> 
    <route> 
     <pattern>/displayXXXPattern</pattern> 
     <generated-parameter name="action">displayXXX</generated-parameter> 
     <implicit-parameter name="p_p_lifecycle">0</implicit-parameter> 
     <implicit-parameter name="p_p_mode">view</implicit-parameter> 
     <implicit-parameter name="p_p_state">normal</implicit-parameter> 
     <implicit-parameter name="p_p_id"xxx_WAR_dekraaquaportlet</implicit-parameter> 
    </route> 

</routes> 

重要的 - >當instanceable設置爲false我們並不需要通過實例ID - >在其他情況下,如果我們在p_p_id沒有通過正確的我將無法正常工作nstance id(什麼是添加,liferay不顯示任何錯誤或錯誤)。在其他情況下

<init-param> 
     <name>check-auth-token</name> 
     <value>false</value> 
    </init-param> 

我們需要剿p_p_auth

相關問題