2014-03-31 58 views
1

我想要獲得友好的URL映射,以便爲Liferay 6.1內部的Spring MVC portlet工作並失敗。Liferay 6.1 + Spring MVC Portlet 4.0:友好的URL映射

我到liferay-portlet-xml添加是根據現有的手動和博客的例子,並按如下:

<friendly-url-mapper-class>com.liferay.portal.kernel.portlet.DefaultFriendlyURLMapper</friendly-url-mapper-class> 
<friendly-url-mapping>search</friendly-url-mapping> 
<friendly-url-routes>com/.../friendly-url-routes.xml</friendly-url-routes> 

friendly-url-routes.xml

<!DOCTYPE routes PUBLIC "-//Liferay//DTD Friendly URL Routes 6.1.0//EN" 
      "http://www.liferay.com/dtd/liferay-friendly-url-routes_6_1_0.dtd"> 
<routes> 
    <route> 
    <pattern>/{match}</pattern> 
    <generated-parameter name="foo">{match}</generated-parameter> 
    </route> 
</routes> 

我的Spring MVC的控制器是這樣

@Controller 
@RequestMapping("VIEW") 
public class CarModelController { 

    @ActionMapping 
    public void action(@RequestParam("foo") final String testParam, 
      final ActionRequest request, final ActionResponse response) { 
    this.logger.info("default action"); 
    this.logger.info("testParam = {}", testParam); 
    } 

    @RenderMapping 
    public String render(final RenderRequest request, final RenderResponse response) { 
    this.logger.info("default render"); 
    return "index"; 
    } 
} 

如果我使用0123調用我的portlet只發生渲染階段輸出,不調用操作方法。

如果我創建使用

<portlet:actionURL var="lastStepUrl"> 
    <portlet:param name="foo" value="bar" /> 
</portlet:actionURL> 

的Liferay產生像/baseurl/-/search/bar?p_auth=sometoken&p_p_lifecycle=1外觀的URL此頁面的鏈接。它正確執行操作階段,我也可以直接調用該URL。但是,它確實包含我想擺脫的p_authp_p_lifecycle參數。

任何建議熱烈歡迎。

+0

我不瞭解Liferay,但是我會首先看看POST/GET中發生的事情,即'portlet:actionUrl'正在產生,與您直接使用類似Chrome的開發工具或FireFox螢火。然後你可以使用curl,從一個可以工作的請求的確切副本開始,然後開始移除,直到停止工作。這將確定是什麼導致一個請求觸發,另一個請求不觸發。需要尋找的東西:HTTP請求類型(POST/GET/etc。),任何正在發送的頭文件,正在發送的任何POST/GET vars等。 – CodeChimp

回答

2

我對Liferay中的友情鏈接瞭解不多。 但我相信你不能從url完全刪除p_p_lifecycle,因爲。

此參數告訴Liferay要執行的操作。該參數有兩個值(0或1)。

  • 0告訴Liferay的,只是呈現的portlet,

  • 而1告訴Liferay的調用過程操作方法。

比方說,你想從某個動作URL刪除,然後可以做這樣的

<pattern>"your URL pattern"</pattern> 
<implicit-parameter name="p_p_lifecycle">1</implicit-parameter> 
<implicit-parameter name="javax.portlet.action">"Your action"</implicit-parameter> 

我們知道1行動階段,我們可以硬編碼,並把它變成routes.xml file.same方式任何渲染的網址,我們可以把0

要刪除p_auth嘗試portal-ext.properties文件把下面的屬性

portlet.add.default.resource.check.enabled=false 
auth.token.check.enabled=false 
+0

將這些行放入portal-ext.properties ist p_auth後不再有更多存在於url中。 – suatCoskun