Межпортлетное общение в liferay - PullRequest
0 голосов
/ 28 июля 2011

Я новичок в жизни.Итак, я просто хочу объяснить свой сценарий.

На самом деле у меня есть два портлета на моей веб-странице - один с левой стороны, а другой с правой стороны:

  • он слеваПортлет содержит две гиперссылки, скажем, demo1 и demo2.
  • И у меня есть еще два портлета, скажем demo1Portlet & demo2Portlet.
  • Вместо правого бокового портлета по умолчанию будет отображаться «demo1Portlet».
  • Теперь мне нужно сделать следующее:, если я нажму на ссылку demo2, то правый портлет изменится и отобразит «demo2Portlet», а если я нажму на ссылку demo1, то на правой стороне отобразится «demo1Portlet».

Может любойКто-нибудь знает, как я могу решить эту задачу?

Пожалуйста, ответьте мне как можно скорее.

Я новичок в Liftray, поэтому я не знаю, может ли это быть достигнуто с помощью IPC или без него.Пожалуйста, объясните, каким будет путь.

Спасибо.

1 Ответ

2 голосов
/ 28 июля 2011

Существует несколько способов общения портлетов друг с другом. Большинство из них описаны в документации МПК и потомке .

В вашем случае вы действительно должны взглянуть на страницу клиента :

С вашей базовой структурой

<a href="javascript:void(0)" class="comm-demo">demo[number]</a>

Вы бы включили этот JS в "портлет передатчика":

// you may need to have jQuery instead of $. Liferay may have its own 
// $ function which jQuery shouldn't mess with.
$( function () { 
      $('a.comm-demo').click( function(event) { 
           var txt = $(this).next().val(); // demo<number> 
           Liferay.trigger('click', {text: txt}); 
           return false; 
      }); 
 });

Затем в «принимающих портлетах»:

 Liferay.bind( 
      'click', 
      function(event, data) { 
           var txt = data.text;
           // this will set all class-of-fields to have the text 
           // "demo<number from above>Portlet"
           $('.class-of-fields')[0].html(txt + "Portlet"); 
           // I believe there is a way to minimize/maximize a portlet by 
           // simulating a mouse click, but research would be needed to 
           // confirm.
 });
...