0

こんにちは、プラグイン ポートレットを作成しました。JSP では、JSON API を使用してすべての国のリストにアクセスしています。ログインユーザーに対しては正常に機能しています。しかし、ゲスト ユーザーの場合、Web サービスにアクセスできません。私は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

サービスへのアクセス許可を持つ 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 に答える
0

上記の問題の回避策を見つけました。Liferay はログイン ユーザーのみが利用できる AJAX 呼び出しに A.io.request を使用しているため、JSON API にアクセスできません。そこで、以下のコードを用意しました。

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 に答える