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
Version imprimable
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:
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:
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=1Code:
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 ligneCode:
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_CONTENTCode:System.out.println(SurveyCreator.VIEW_SURVEY_CONTENT);
Par contre la lignene me crée pas le bon html.Code:
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:
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>