Vista combinada Visión Plana Vista de árbol
Discusiones [ Anterior | Siguiente ]
toggle
Nicolas B
Methode appelée pour execution de traitement
25 de junio de 2007 9:02
Respuesta

Nicolas B

Ranking: Junior Member

Mensajes: 35

Fecha de incorporación: 28 de mayo de 2007

Mensajes recientes

Bonjour,

J'ai un problème assez simple à première vue mais n'ayant jamais réalisé l'action cela me pose quelques problèmes.

Le problème est le suivant :

Je souhaite depuis une portlet et le clic d'un bouyon aller sur une autre page et faire un traitement.

Par exemple le traitement sera de lister les clients dans un tableau (problème bête ...).

J'ai une classe java qui aura une methode qui fera le traitement voulu (lister les clients). On va l'appeler client.java. Elle hérite de "PortletAction".

Donc dans le coprs de ma deuxième portlet j'ai donc un truc du style :

 1
 2<%@ include file="/html/portlet/recent_documents/init.jsp" %>
 3
 4<%
 5List ranks = DLFileRankLocalServiceUtil.getFileRanks(portletGroupId, user.getUserId());
 6%>
 7
 8        <table border="0" cellpadding="0" cellspacing="0">
 9
10        <%
11        for (int i = 0; i < ranks.size() && i < 5; i++) {
12            DLFileRank rank = (DLFileRank)ranks.get(i);
13
14            try {
15                DLFileEntry fileEntry = DLFileEntryLocalServiceUtil.getFileEntry(rank.getFolderId(), rank.getName());
16
17                PortletURL rowURL = renderResponse.createActionURL();
18
19                rowURL.setWindowState(LiferayWindowState.EXCLUSIVE);
20
21                rowURL.setParameter("struts_action", "/recent_documents/get_file");
22                rowURL.setParameter("folderId", rank.getFolderId());
23                rowURL.setParameter("name", rank.getName());
24        %>
25
26                <tr>
27<td><a href="<%= rowURL.toString() %>"><img align="left" border="0" src="<%= themeDisplay.getPathThemeImage() %>/document_library/<%= DLUtil.getFileExtension(rank.getName()) %>.gif"><%= fileEntry.getTitle() %></a></td>
28                </tr>
29
30        <%
31            }
32            catch (Exception e) {
33            }
34        }
35        %>
36
37</table>


J'ai donc un objet de type "PortletURL". Je lie cet objet à ma classe via
1            rowURL.setParameter("struts_action", "/recent_documents/get_file");
(dans mon fichier struts-confi.xml je map vers ma classe.

Mais le problème que j'ai c'est de savoir quelle methode est appelé ??
Je n'arrive pas à savoir par quoi commence le traitement dans les classes java.
Je regarde les methodes mais je ne vois pas laquelle est appelée en premier depuis ma portlet. Est-ce une methode de la classe PortletAction ? ou de la classe Action (dont hérite PortletAction ...) ???
D'après ce que j'ai lu la methode init est faite en première mais cela ne va pas. Est-ce la methode ProcessAction (dont le rôle est d'etre appelée suite à une action d'un utilisateur (oui mais comment ? Dans mon cas c'est au chargement de la page que je veux faire un traitement)).
Dans la classe sur laquelle je me base pour mon exemple (GetFileAction.java), la methode ProcessAction ne comporte pas grand chose donc je pense que ce n'est pas cette methode qui est appelée ... (voici le code de cette methode) :
1    public void processAction(
2            ActionMapping mapping, ActionForm form, PortletConfig config,
3            ActionRequest req, ActionResponse res)
4        throws Exception {
5    }


Si l'on fait le parallèle avec les servlets, quelle methode est le pendant de doGet pour l'execution d'un traitement dans un controleur ? Et comment renvoyer les informations ? Comment les afficher : monPortletURL.toString( ) ???

Si quelqu'un avait une petite idée de comment cela fonctionne pour pouvoir me débloquer emoticon.

Merci.

Cordialement.

Nicolas.
Jean-Sébastien Hederer
RE: Methode appelée pour execution de traitement
25 de junio de 2007 13:25
Respuesta

Jean-Sébastien Hederer

Ranking: Junior Member

Mensajes: 72

Fecha de incorporación: 12 de octubre de 2005

Mensajes recientes

de mémoire, et si j'ai bien compris ta question (ne pas me jeter la pierre si c'est faux...), c'est la méthode ViewAction qui est activée par défaut.

si tu trouves pas trop indigeste, voici un "white paper" IBM sur l'api JSR168: ftp://ftp.software.ibm.com/software/dw/wes/pdf/0406_hepper-Whitepaper-JSR168-WP5PortletAPI-comparison.pdf
Anónimo
RE: Methode appelée pour execution de traitement
25 de junio de 2007 14:54
Respuesta

Anónimo

Je pense qu'effectivement c'est la méthode processAction qui est apellée dans ton cas.

Sinon, tu peux envoyer un paramètre à ta portlet pour que dans le processAction de ton action, tu puisses savoir quel traitement effectué.
Nicolas B
RE: Methode appelée pour execution de traitement
26 de junio de 2007 0:50
Respuesta

Nicolas B

Ranking: Junior Member

Mensajes: 35

Fecha de incorporación: 28 de mayo de 2007

Mensajes recientes

Bonjour,

Vous pourriez m'indiquer de quelle classe hérite vos classes java en général ? GenericPortlet ? PortletAction ? Action ?

Merci
Ray Augé
Re: [Liferay en français]RE: Methode appelée pour execution de traitement
26 de junio de 2007 5:51
Respuesta

Ray Augé

LIFERAY STAFF

Ranking: Liferay Legend

Mensajes: 1195

Fecha de incorporación: 7 de febrero de 2005

Mensajes recientes

<PRE>> Vous pourriez m'indiquer de quelle classe hérite vos classes java en général ? GenericPortlet ? PortletAction ? Action ?


80% de tout les portlet sont en fait
com.liferay.portlet.StrutsPortlet</PRE>
Nicolas B
RE: Re: [Liferay en français]RE: Methode appelée pour execution de traiteme
27 de junio de 2007 8:15
Respuesta

Nicolas B

Ranking: Junior Member

Mensajes: 35

Fecha de incorporación: 28 de mayo de 2007

Mensajes recientes

Merci pour vos réponses mais je suis toujours bloqué !!

Je souhaite que lorsque je clic sur un bouton depuis une portlet, cela m'amène sur une autre portlet (page) et que s'affiche la liste des clients (info en base de données).

Mais je ne vois pas comment récupérer et afficher les informations au chargement de la page, après avoir cliqué sur le bouton emoticon

Si quelqu'un pouvais m'indiquer comment partir :
- que dois-je avoir dans ma page (jsp) qui doit dès l'affichage lister tous les clients ?
- ma classe java qui va me permettre de lister mes clients doit hériter de quelle classe ?
- depuis quelle methode dois-je faire le traitement ?
- dans quelle variable dois-je écrire les données pour qu'elles soient accessibles depuis ma JSP ?
- quelle methode est appelée pour récupérer des informations depuis une base de données et depuis quel objet (type --> PortletURL ?) ?
-

Enfin voilà pour le moment toutes les questions que je me pose. Si vous aviez deux trois idées ou une doc expliquant comment récupérer des infos en base et les lister sur une page JSP au chargement de celle-ci, cela pourrait m'aider. Ou si vous avez fait une portlet semblable a ce que je veux faire pourriez-vous me permettre de visualiser votre code source (classe, jsp) car je suis vraiement bloqué depuis 3 jours.emoticon

Merci beaucoup.

PS : pourriez-vous m'indiquer ce qui se passe sur le code suivant ?

 1
 2       [b] PortletURL rowURL = renderResponse.createActionURL();[/b]
 3    rowURL.setWindowState(LiferayWindowState.EXCLUSIVE);
 4
 5    [b]rowURL.setParameter("struts_action", "/recent_documents/get_file");
 6    rowURL.setParameter("folderId", rank.getFolderId());
 7    rowURL.setParameter("name", rank.getName());[/b]
 8        %>
 9
10<tr>
11    <td><a href="<%= [b]rowURL.toString()[/b] %>"><img align="left" border="0" src="<%= themeDisplay.getPathThemeImage() %>/document_library/<%= DLUtil.getFileExtension(rank.getName()) %>.gif"><%= fileEntry.getTitle() %></a></td>
12                </tr>


Quelle methode est appelée automatiquement par le conteneur de portlet pour mon objet rowURL de type PortletURL ?
Nicolas B
RE: Re: [Liferay en français]RE: Methode appelée pour execution de traiteme
28 de junio de 2007 8:36
Respuesta

Nicolas B

Ranking: Junior Member

Mensajes: 35

Fecha de incorporación: 28 de mayo de 2007

Mensajes recientes

C'est encore moi.

J'ai une question peut etre plus simple :

comment faire lien entre une JSP et une classe java. Je m'explique.

J'arrive depuis une JSP à atteindre à une classe java et en particulier la methode processAction. Dans cette methode je redirige l'utilisateur vers une JSP.
J'aimerai donc pouvoir dans la methode processAction effectuer un traitement l'enregistrer dans une variable et pouvoir afficher cette variable depuis la JSP source.

Mais je ne sais pas trop quelle variable sont utilisées pour communiquer entre la classe java et une jsp.

Je sais pas si j'ai été bien clair, pour cela un petit exemple :

Dans ma classe java (depuis la methode processAction) j'enregistre dans un variable de type string un tableau HTML avec les valeurs que je souhaite (nom du client par exemple) et ensuite je redirige l'utilisateur vers une jsp et dans cette JSP au chargement je souhaite afficher le contenu de la variable, à savoir le tableau listant les clients.

Je me doute que cela n'ai pas du tout comme cela que l'on prossède habituellement mais je ne vois tellement pas comment faire que bon...

Merci d'avance.

Nicolas
Jean-Sébastien Hederer
RE: Re: [Liferay en français]RE: Methode appelée pour execution de traiteme
30 de junio de 2007 14:05
Respuesta

Jean-Sébastien Hederer

Ranking: Junior Member

Mensajes: 72

Fecha de incorporación: 12 de octubre de 2005

Mensajes recientes

euh tout bêtement, as-tu essayé de prendre exemple sur une portlet existante Liferay comme la série des "sample-..." (répertoire "portlets") ou les portlets du portail (portal-ejb/src) comme com.liferay.portlet.myaccount.action