2015-11-07 130 views
1

使用MVCPortlet(Liferay 6.2)Ajax無法在portlet配置jsp頁面中工作(liferay 6.2)

是否有任何理由說明此ajax調用可以在我的portlet的常規jsp上工作,但不適用於portlet的配置頁面(單擊右上角,然後單擊配置和選項時打開的jsp)。

在這種情況下,portletURL正確顯示(alert),JS返回成功,但控制器從未收到客戶端請求。

這裏的Ajax調用:

$.ajax({ 
    url: portletURL, 
    type: 'POST', 
    dataType: 'text', 
    cache: false, 
    data: { 
     test: test 
    }, 
    success: function(data) { 
     alert('success ajax'); 
    }, 
    error: function(http, message, exc) { 
     alert('error ajax'); 
    } 
}); 

同樣,這段代碼完美的作品的另一個JSP。

這是否對任何人敲響? 在此先感謝。

回答

0

我有同樣的問題。試過liferay-portlet:resourceURL portletConfiguration="true"portlet:resourceURL,同樣在發送之前手動解析並修改url。資源服務方法(無論是serveResource的實現還是使用Spring MVC或Liferay MVC(實現類MVCPortlet)的全新方法)都不能在配置模式下工作。

我的解決方案是爲了避免資源服務,而是選擇操作階段(p_p_lifecycle = 1)。在AJAX中完全可行,只需在我的DefaultConfigurationAction實現類中覆蓋processAction方法。

希望這可以爲我節省無數個小時。

0

我在Liferay 7.0.x中遇到了同樣的問題,我發現了一個可應用於6.2的工作解決方案,但我沒有一個用於測試的實例。

您必須使用java代碼生成資源url。舉例:

LiferayPortletURL resourceURL = (LiferayPortletURL) renderResponse.createResourceURL(); 
resourceURL.setPortletId(ParamUtil.getString(request, "portletResource")); 
resourceURL.setResourceID("yourId"); 

然後使用resourceURL.toString()來生成URL。 serverResource必須在portlet類中實現。