2013-04-18 3 views
0

J'ai un problème avec la communication inter-portlet dans Liferay. Deux portlets communiquent via des événements.Inter-Portlet-Communication - Liferay

Auteur:

<supported-publishing-event xmlns:x='http://liferay.com'> 
    <qname>x:aufgabeInfo</qname> 
</supported-publishing-event> 

Listener:

<supported-processing-event xmlns:x='http://liferay.com'> 
    <qname>x:aufgabeInfo</qname> 
</supported-processing-event> 

événement:

<event-definition xmlns:x='http://liferay.com'> 
    <qname>x:aufgabeInfo</qname> 
    <value-type>java.lang.String</value-type> 
</event-definition> 

Sender-portlets:

<a onclick="selectedEntry('${aufgabe.aufgabenName}', '${aufgabe.aufgabenID}');"> 
    ${aufgabe.aufgabenName} </a><br/> 

L'événement onclick appelle une méthode ProcessAction via un appel ajax.

function selectedEntry(name, id){ 
    console.log("in click"); 
    var url = '<portlet:actionURL name="open"/>'; 
     $.ajax({ 
      type: "POST", 
      url: url, 
      data: {"name": name, "ID": id}, 
      dataType: "json", 
      success: function(){ 
       console.log("in success"); 

      }, 
     }); 

Et la méthode ProcessAction de définir un événement pour Commincation. Ainsi, le portlet Listener-Portlet reçoit cet événement dans la méthode ProcessEvent.

Event event = request.getEvent(); 
String jsonString = (String) event.getValue(); 

Mon problème est que j'ai besoin du jsonString en javascript. Avec un onclick-Event, il n'actualise pas toute la page, mais la communication fonctionne. Avec un bouton, il rafraîchit toute la page, mais la communication ne fonctionne pas.

Une idée?

Répondre

-1

La première version de la spécification de portlet, JSR-168/portlet1.0, n'incluait aucun support pour la communication inter-portlet. La deuxième version, JSR-286/portlet2.0, qui est prise en charge pour le mécanisme IPC. IPC est rendu facile avec JSR-286 pour partager les données entre deux portlets. En utilisant les mécanismes IPC, nous pouvons partager les données de la phase ACTION à la phase VIEW et à la phase VIEW-VIEW. Pour obtenir des instructions détaillées sur la création d'un portlet dans Liferay, vous pouvez: