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 :
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 <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>
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 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"); } }
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:
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 <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>
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
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); } } }
De plus je ne comprend pas à quoi correspond le QName. Est-ce l'adresse ou sera placé la portlet qu'il faut mettre ?
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.
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.
Partager