IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Portails Java Discussion :

Inter Portlet Communication


Sujet :

Portails Java

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 84
    Points : 53
    Points
    53
    Par défaut Inter Portlet Communication
    Bonjour à toutes et à tous.

    Voilà je suis débutant sur le développement de portlet.

    Je doit mettre en place un système d'IPC pour un projet d'apprentissage.

    Après avoir passé plusieurs jours à naviguer sur le net, à lire beaucoup de documentation et de tuto, je ne parviens pas à faire fonctionner mon IPC.

    Je souhaite avoir une chose toute bête, comme par exemple une portlet qui contient un bouton et lorsque l'on clic dessus, un message s'affiche dans une autre portlet.

    Je précise que les portlets sont dans des WAR différent mais qu'elles seront sur la même page.

    Pour l'instant j'ai fait la chose suivante :

    création d'une portlet émettrice.

    J'ai ajouté dans sont portlet.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <portlet>
            <supported-publishing-event>
    	        <qname xmlns:x="localhost:8080/events">x:EventClic</qname>
            </supported-publishing-event>
    </portlet>
    <event-definition>
    	<qname xmlns:x='localhost:8080/events'>x:EventClic</qname>
    	<value-type>java.lang.String</value-type>
    </event-definition>
    Pour cette même portlet, j'ai créé une class SendEvent.java :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public class SendEvent extends GenericPortlet{
     
    	@ProcessAction(name = "truc")
    	public void truc(ActionRequest request, ActionResponse response)
    	{
    		QName qName = new QName("localhost:8080/events", "EventClic");
    		response.setEvent(qName, "on est le 1er Juin");
    	}
    }
    Et enfin un fichier xhtml Sender.xhtml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    <?xml version="1.0"?>
     
    <f:view
     	xmlns:f="http://java.sun.com/jsf/core"
     	xmlns:h="http://java.sun.com/jsf/html"
    	xmlns:ice="http://www.icesoft.com/icefaces/component"
    	xmlns:icecore="http://www.icefaces.org/icefaces/core"
    	xmlns:liferay-ui="http://portletfaces.org/liferayfaces/liferay-ui"
    	xmlns:liferay-util="http://portletfaces.org/liferayfaces/liferay-util"
    	xmlns:ui="http://java.sun.com/jsf/facelets"
    >
    	<h:head />
    	<h:body>
    		<a href="<portlet:actionURL name='truc'></portlet:actionURL>">c'est parti</a>
    	</h:body>
    </f:view>


    Maintenant j'ai créé une portlet réceptrice

    portlet.xml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <portlet>
            <supported-processing-event>
    	        <qname xmlns:x="localhost:8080/events">x:EventClic</qname>
            </supported-processing-event>
    </portlet>
    <event-definition>
    	<qname xmlns:x='localhost:8080/events'>x:EventClic</qname>
    	<value-type>java.lang.String</value-type>
    </event-definition>
    Pour la class RecieveEvent.java :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    public class RecieveEvent {
     
    	@ProcessEvent (name = "chose")
        public void chose(EventRequest request, EventResponse response)
        {
        	Event event = request.getEvent();
            if (event.getName().equals("EventClic"))
            {
            	String value = (String) event.getValue();
                //process payload here
                System.out.println("------------------------------------------------------");
                System.out.println(" received an event: " + value);
                System.out.println("------------------------------------------------------");
                response.setRenderParameter("EventClic", value);
            }
        }
    }
    Donc voilà. Ceci ne fonctionne pas. J'ai l'exception suivante qui est levé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    javax.faces.view.facelets.FaceletException: Error Parsing /xhtml/Sender.xhtml: Error Traced[line: 14] The value of attribute "href" associated with an element type "null" must not contain the '<' character.
    De plus je ne comprend pas à quoi correspond le QName. Est-ce l'adresse ou sera placé la portlet qu'il faut mettre ?

    Si quelqu'un peut m'aider ou me fournir un exmple tout simple se serait super sympa. Parce que les exemples que j'ai trouvé sur internet ne sont pas simple et je me mélange les pinceaux.

    Dernière précision, apparemment le mieux est d'utiliser JSR 286 qui est de rigueur maintenant.

    Si vous avez besoin de plus d'information ou une question ou autre faite le moi savoir, je suis à votre écoute.

    Amicalement Boobs60.

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 84
    Points : 53
    Points
    53
    Par défaut
    J'ai partiellement résolu mon problème.

    En faite la technique que j'utilisais n'était pas la bonne puisqu'elle est destiné pour des JSF hors je travail en JSF.

    J'ai donc rectifié le tir. Maintenant j'arrive bien à faire passer un String entre mes portlets. Une chose me gène c'est qu'avec ma méthode (et je ne sais pas si il y en a d'autre. Je n'ai rien trouvé sur internet) c'est que la page entière se refresh. Ce n'est pas dramatique en soit mais ça me gène un peut puisque l'utilisateur va être amené à cliquer pas mal de fois .

    Mais ceci est secondaire. La je sais que je récupère bien mes évènements via des :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    System.out.println(myEvent);
    Ce que j'aimerais c'est pouvoir afficher la valeur de mes évènements dans ma portlet mais je n'y arrive pas. Je ne sais pas ce qu'il faut que je mette dans mon fichier xhtml pour pouvoir appeler la valeur de mon évènement.

    Si quelqu'un passe par la et pense pouvoir m'aider je suis preneur.

    Amicalement Boobs60.

  3. #3
    Membre régulier
    Inscrit en
    Décembre 2009
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 140
    Points : 84
    Points
    84
    Par défaut
    Bonjour boobs60,
    Essaye les demos de liferay concernant l'inter-Portlet Communication (IPC) :
    il y a 4 exemple :
    - JSF2 IPC (Events) - Customers
    - JSF2 IPC (Events) - Bookings
    - JSF2 IPC Public Render Parameters Portlet
    - ICEfaces3 IPC Ajax Push Portlet

    http://www.liferay.com/community/lif...ay-faces/demos

Discussions similaires

  1. Inter process Communication
    Par Abbadon1988 dans le forum Général Java
    Réponses: 3
    Dernier message: 03/02/2011, 23h55
  2. Réponses: 8
    Dernier message: 17/01/2010, 22h25
  3. Inter process communication
    Par swingNJava dans le forum Linux
    Réponses: 8
    Dernier message: 27/09/2008, 22h08
  4. [Portlet] Applet Servlet Portlet Communication
    Par motorenshi dans le forum Portails
    Réponses: 1
    Dernier message: 07/02/2007, 13h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo