Svp quelq'un peut m'aider à trouver comment invoquer une portlet à partir d'une page jsp cad exécuter portlet.java à partir d'un .JSP
merci de bien vouloir m'aider
Svp quelq'un peut m'aider à trouver comment invoquer une portlet à partir d'une page jsp cad exécuter portlet.java à partir d'un .JSP
merci de bien vouloir m'aider
Euh juste une question à te poser: pour déployer une portlet, il faudrait pas un portail ?
De plus, une portlet n'est-elle pas sensée utiliser (et réciproquement) des morceaux de codes jsp ?
A mon avis pour déployer une portlet il faux absolument un portail!
Disons qu'il faut un portlet container.
Comme pour les servlets il faut un serveur de servlet, et bien pour les portlet il faut un serveur de portlet.
On appelle ça un portlet container.
JBoss en est un par exemple.
Et la plupart des portails (liferay, jboss plateforme, exoplateforme...) ont un portlet container embarqué.
Si je me trompe corrigez moi.
Après, pour le JSP et les portlets, tu peux dans un portlet appeler un jsp qui génére le HTML de ta portlet.
Et tu peux en thèorie en JSP rediriger vers une url ou appeler une méthode de ta portlet.
C'est le mieux que j'ai trouvé pour ça (en anglais):
http://docs.jboss.org/jbportal/v2.4/...s.html#d0e1934
Partie 5.2.2.5. JSP files and the portlet taglib
Mais bon je bloque sur un truc: j'essaye d'appeler une méthode de ma portlet en récupérant via un javabean une liste de valeurs à passer en paramétre.
En fait, un lien par paramètre.
Je vais copier coller mon code jsp ce sera plus simple:
Et le code de ma portlet :
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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 <%@ page import="java.sql.*" language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %> <jsp:useBean id="myBean" class="intermed.questionnaire.bean.interfacesBDD.createur.CreateurBDDBean" scope="session" /> <% myBean.connect("jdbc:mysql://localhost/intermed_survey" , "root" , "antoine"); ResultSet _surveys = myBean.getMySurveys(1); %> <table id="surveys_list"> <caption>Liste de vos questionnaires :</caption> <% while(_surveys.next()) { %> <tr> <td> <a href="<portlet:actionURL><portlet:param name='id_survey' value=' <% out.print(_surveys.getInt("id_survey")); %> '></portlet:param></portlet:actionURL>"> <% out.print(_surveys.getString("title")); %> </a> </td> </tr> <% } %> </table>
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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 package intermed.survey.creator; import java.io.IOException; import javax.portlet.GenericPortlet; import javax.portlet.PortletException; import javax.portlet.PortletRequestDispatcher; import javax.portlet.RenderRequest; import javax.portlet.RenderResponse; public class SurveyCreator extends GenericPortlet { protected void doView(RenderRequest rRequest, RenderResponse rResponse) throws IOException, PortletException { rResponse.setContentType("text/html"); //en théorie, il y a toujours un et un seul paramétre de défini. Si ce n'est pas le cas, page d'erreur if(rRequest.getParameter("_id_user")!=null) { PortletRequestDispatcher prd = getPortletContext().getRequestDispatcher(rResponse.encodeURL("/WEB-INF/jsp/surveys.jsp?"+rRequest.getParameter("_id_user"))); prd.include(rRequest, rResponse); } else if(rRequest.getParameter("_id_survey")!=null) { PortletRequestDispatcher prd = getPortletContext().getRequestDispatcher(rResponse.encodeURL("/WEB-INF/jsp/survey_content.jsp?"+rRequest.getParameter("_id_survey"))); prd.include(rRequest, rResponse); } else { //PortletRequestDispatcher prd = getPortletContext().getRequestDispatcher(rResponse.encodeURL("/WEB-INF/jsp/error.jsp")); PortletRequestDispatcher prd = getPortletContext().getRequestDispatcher(rResponse.encodeURL("/WEB-INF/jsp/surveys.jsp?"+rRequest.getParameter("_id_user"))); prd.include(rRequest, rResponse); } } }
Bah j'avais juste oublié de définir la méthode processAction dans mon portlet.
Le code de cette méthode :
Au passage, http://www.onjava.com/pub/a/onjava/2...-2.html?page=1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 public void processAction(ActionRequest aRequest, ActionResponse aResponse) throws PortletException, IOException, UnavailableException { String sYourname = (String) aRequest.getParameter("id_survey"); aResponse.setRenderParameter("_id_survey", sYourname); }
Pas mal à lire.
Nouveau problème, si quelqu'un peut m'aider.
Voilà mon code jsp :
La ligne
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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 <%@ page import="java.sql.*" import="intermed.survey.creator.*" language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %> <jsp:useBean id="myBean" class="intermed.questionnaire.bean.interfacesBDD.createur.CreateurBDDBean" scope="session" /> <% myBean.connect("jdbc:mysql://localhost/intermed_survey" , "root" , "antoine"); ResultSet _surveys = myBean.getMySurveys(1); System.out.println(SurveyCreator.VIEW_SURVEY_CONTENT); %> <table id="surveys_list"> <caption>Liste de vos questionnaires :</caption> <% while(_surveys.next()) { %> <tr> <td> <a href="<portlet:actionURL portletMode='view'><portlet:param name='id_survey' value=' <%= _surveys.getInt("id_survey") %> '></portlet:param> <portlet:param name='mode' value=' <% SurveyCreator.VIEW_SURVEY_CONTENT %> '></portlet:param> </portlet:actionURL>"> <%= _surveys.getString("title") %> </a> </td> </tr> <% } myBean.closeConnection(); %> </table>me renvoie bien en sortie la valeur de SurveyCreator.VIEW_SURVEY_CONTENT
Code : Sélectionner tout - Visualiser dans une fenêtre à part System.out.println(SurveyCreator.VIEW_SURVEY_CONTENT);
Par contre la lignene me crée pas le bon html.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <portlet:param name='mode' value=' <% SurveyCreator.VIEW_SURVEY_CONTENT %> '></portlet:param>
Au lieu d'avoir <portlet:param name='mode' value='1'></portlet:param>
J'ai <portlet:param name='mode' value='
<%
SurveyCreator.VIEW_SURVEY_CONTENT
%>
'></portlet:param>
tel quel
C'est bon. Solution trouvée.
En fait, il ne faut pas de saut de ligne dans la balise <portlet:param et surtout, il ne faut sortir que des Strings du java vers le jsp.
Voilà le code corrigé:
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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 <%@ page import="java.sql.*" import="intermed.survey.creator.*" language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %> <jsp:useBean id="myBean" class="intermed.questionnaire.bean.interfacesBDD.createur.CreateurBDDBean" scope="session" /> <portlet:defineObjects/> <% myBean.connect("jdbc:mysql://localhost/intermed_survey" , "root" , "antoine"); ResultSet _surveys = myBean.getMySurveys(1); System.out.println(SurveyCreator.VIEW_SURVEY_CONTENT); String n= ""+SurveyCreator.VIEW_SURVEY_CONTENT; %> <table id="surveys_list"> <caption>Liste de vos questionnaires :</caption> <% while(_surveys.next()) { %> <tr> <td> <a href="<portlet:actionURL portletMode='view'> <portlet:param name='id_survey' value='<%=new Integer(_surveys.getInt("id_survey")).toString()%>'/> <portlet:param name='mode' value='<%=n%>'/> </portlet:actionURL>"> <%= _surveys.getString("title") %> </a> </td> </tr> <% } myBean.closeConnection(); %> </table>
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager