Liferay: вызов службы JSON из портлета

Я пытаюсь вызвать веб-службу json с помощью моего кода javascript портлета: в js/main.js у меня есть:

   Liferay.Service(
  '/Basic-portlet.hello/remote-hello',
  {
    name: ''
  },
  function(obj) {
    console.log(obj);
  }
);

этот вызов выполняется только один раз, когда я добавляю портлет на страницу, всякий раз, когда страница перезагружается, возникает ошибка javascript:

Uncaught TypeError: undefined is not a function
A.mix.parseIOConfig
A.mix.parseInvokeArgs
Service    main.js?browserId=other&lan....
(anonymous function)

person Ahmed Aswani    schedule 08.04.2015    source источник


Ответы (2)


Я видел, как это происходило, когда вы пытались вызвать веб-службу Liferay JSON из контекста без доступа к AlloyUI.

Добавьте следующий импорт AUI:

<script src="http://cdn.alloyui.com/2.0.0/aui/aui-min.js"></script>

Затем оберните вызов службы следующим образом:

AUI().use('aui-base', function(A){
  // Liferay Service invocation here
});

E.g.,

AUI().use('aui-base', function(A){
  Liferay.Service(
    '/user/get-user-by-email-address',
    {
      companyId: Liferay.ThemeDisplay.getCompanyId(),
      emailAddress: '[email protected]'
    },
    function(obj) {
      console.log(obj);
    }
  );
});
person Jesse Rao    schedule 29.04.2015

Я сталкивался с подобными проблемами в прошлом. Попробуйте отключить минификатор javascript и посмотрите, решит ли это вашу проблему. Это решило мою проблему.

Спасибо, Гаурав.

person Gaurav    schedule 08.04.2015