0

嗨,我创建了一个插件 portlet。在 JSP 中,我使用 JSON API 访问所有国家/地区列表。它对登录用户工作正常。但对于访客用户,我无法访问网络服务。我正在使用 Liferay 6.0.6。以下是我的代码。

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

                }
            }
        );
4

3 回答 3

2

假设您使用的是 Liferay 6.1,您可以通过在 portal-ext.properties 文件中添加一个属性来实现它

json.service.public.methods=getCountries

如果您需要检查整个流程结帐

JSONServiceAction
于 2012-09-17T06:48:04.437 回答
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);
                        }

                    }       
            });
于 2012-09-04T16:25:51.193 回答
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");

            }
        }
    );
于 2012-08-28T10:13:53.720 回答