Message Boards

Methode appelée pour execution de traitement

Nicolas B, modified 16 Years ago.

Methode appelée pour execution de traitement

Junior Member Posts: 35 Join Date: 5/28/07 Recent Posts
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 :


<%@ include file="/html/portlet/recent_documents/init.jsp" %>

<%
List ranks = DLFileRankLocalServiceUtil.getFileRanks(portletGroupId, user.getUserId());
%>

		<table border="0" cellpadding="0" cellspacing="0">

		&lt;%
		for (int i = 0; i &lt; ranks.size() &amp;&amp; i &lt; 5; i++) {
			DLFileRank rank = (DLFileRank)ranks.get(i);

			try {
				DLFileEntry fileEntry = DLFileEntryLocalServiceUtil.getFileEntry(rank.getFolderId(), rank.getName());

				PortletURL rowURL = renderResponse.createActionURL();

				rowURL.setWindowState(LiferayWindowState.EXCLUSIVE);

				rowURL.setParameter("struts_action", "/recent_documents/get_file");
				rowURL.setParameter("folderId", rank.getFolderId());
				rowURL.setParameter("name", rank.getName());
		%&gt;

				<tbody><tr>
<td><a href="<%= rowURL.toString() %>"><img align="left" border="0" src="<%= themeDisplay.getPathThemeImage() %>/document_library/<%= DLUtil.getFileExtension(rank.getName()) %>.gif">&lt;%= fileEntry.getTitle() %&gt;</a></td>
				</tr>

		&lt;%
			}
			catch (Exception e) {
			}
		}
		%&gt;

</tbody></table>



J'ai donc un objet de type "PortletURL". Je lie cet objet à ma classe via
			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) :
	public void processAction(
			ActionMapping mapping, ActionForm form, PortletConfig config,
			ActionRequest req, ActionResponse res)
		throws Exception {
	}


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.
thumbnail
Jean-Sébastien Hederer, modified 16 Years ago.

RE: Methode appelée pour execution de traitement

Junior Member Posts: 72 Join Date: 10/13/05 Recent Posts
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
Anonymous, modified 16 Years ago.

RE: Methode appelée pour execution de traitement

Post: 1
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, modified 16 Years ago.

RE: Methode appelée pour execution de traitement

Junior Member Posts: 35 Join Date: 5/28/07 Recent Posts
Bonjour,

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

Merci
thumbnail
Ray Auge, modified 16 Years ago.

Re: [Liferay en français]RE: Methode appelée pour execution de traitement

Liferay Legend Posts: 1197 Join Date: 2/8/05 Recent Posts
<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, modified 16 Years ago.

RE: Re: [Liferay en français]RE: Methode appelée pour execution de traiteme

Junior Member Posts: 35 Join Date: 5/28/07 Recent Posts
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 ?


       [b] PortletURL rowURL = renderResponse.createActionURL();[/b]
	rowURL.setWindowState(LiferayWindowState.EXCLUSIVE);

	[b]rowURL.setParameter("struts_action", "/recent_documents/get_file");
	rowURL.setParameter("folderId", rank.getFolderId());
	rowURL.setParameter("name", rank.getName());[/b]
		%&gt;


	<a href="<%= [b]rowURL.toString()[/b] %>"><img align="left" border="0" src="<%= themeDisplay.getPathThemeImage() %>/document_library/<%= DLUtil.getFileExtension(rank.getName()) %>.gif">&lt;%= fileEntry.getTitle() %&gt;</a>
				


Quelle methode est appelée automatiquement par le conteneur de portlet pour mon objet rowURL de type PortletURL ?
Nicolas B, modified 16 Years ago.

RE: Re: [Liferay en français]RE: Methode appelée pour execution de traiteme

Junior Member Posts: 35 Join Date: 5/28/07 Recent Posts
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
thumbnail
Jean-Sébastien Hederer, modified 16 Years ago.

RE: Re: [Liferay en français]RE: Methode appelée pour execution de traiteme

Junior Member Posts: 72 Join Date: 10/13/05 Recent Posts
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