2012-08-28 169 views
0

嗨,我創建了一個插件portlet。在JSP中,我使用JSON API訪問所有國家/地區列表。它對登錄用戶來說工作正常。但是對於Guest用戶,我無法訪問Web服務。我正在使用Liferay 6.0.6。以下是我的代碼。使用JSON API訪問Liferay Web服務

Liferay.Service.Portal.Country.getCountries(
      {}, 
      function(result) { 
       for(var count=0;count< result.length;count++){ 
        alert(result[count].name); 
        var option = document.createElement("option"); 

       } 
      } 
     ); 

回答

0

我認爲你需要通過服務的權限serviceContext。

你可以通過將communityPermissions和guestPermissions設置爲VIEW來嘗試嗎?

Liferay.Service.Portal.Country.getCountries(
     { 

     serviceContext: jQuery.toJSON(
      { 
       communityPermissions: communityPermission, 
       guestPermissions: guestPermission, 
       scopeGroupId: themeDisplay.getScopeGroupId() 
      } 
     ) 

     }, 
     function(result) { 
      for(var count=0;count< result.length;count++){ 
       alert(result[count].name); 
       var option = document.createElement("option"); 

      } 
     } 
    ); 
+0

我得到一個JavaScript錯誤,即「對象不支持屬性或方法'請求'在followng行'AUI()。io.request(serviceUrl,配置);' –

+0

下面是語法。確保語法是正確的.. 欲瞭解更多詳情,請訪問此鏈接。 www.liferay.com/community/wiki/-/wiki/Main/json+service+api Liferay.Service.NAMESPACE.ENTITY.METHOD( { PARAMETER_1:VALUE_1, PARAMETER_2:VALUE_2 }, 函數(消息){ VAR例外= message.exception; 如果(例外){ ! //流程成功 } else { // Process Exception } } – Sharana

+0

Hi Sharana,我已經閱讀了那篇文章。由於Guest用戶的AUI()。io.request()方法不可用,我得到了問題。感謝您給予回覆。 –

0

我找到了解決上述問題的方法。我無法訪問JSON API,因爲Liferay使用A.io.request進行AJAX調用,只能用於登錄用戶。所以我準備了下面的代碼。

jQuery.ajax({ 
        type: "POST", 
        url: '<%=themeDisplay.getURLPortal() %>'+'/tunnel-web/json?serviceClassName=com.liferay.portal.service.CountryServiceUtil&serviceMethodName=getCountries', 

        dataType: 'json', 
        success: function(countriesList) { 
         alert(countriesList); 
         alert(countriesList[0].countryId); 
         } 

        }  
      }); 
2

假設你正在使用的Liferay 6.1,你可以通過添加屬性portal-ext.properties實現這一目標文件

json.service.public.methods=getCountries 

如果您需要檢查整個流程結賬

JSONServiceAction