Bonjour,
je débute en java-j2ee et on m'a demandé de réaliser un projet en Struts1.1/ejb2.0 sans aucune formation préalable (avec en plus un vieux jdev 10.1.2); donc je galère un max.
J'ai deux soucis en ce moment que je n'arrive pas à résoudre:
1) jndi.properties
J'ai créé mes descripteurs de déploiement. Cependant quand je lance l'OC4J (embedded) j'ai un message d'erreur "Fichier jndi.properties non trouvé".
C'est un fichier que je n'ai pas écrit mais qui semble être généré automatiquement (j'en ai trouvé une version dans mon .War). Apparement il faudrait que je le linke quelquepart; mais je n'ai aucune idée de où.
2)DispatchAction, ActionForm et html:submit
Alors là j'ai fait un bidouillage crasseux car je ne voulais pas avoir de champs hidden dans ma jsp.
Le soucis c'est que quand je fait mon html:submit; il ne semble pas être en mesure de récupérer l'ActionForm (en voulant accéder à un champ de l'ActionForm form, j'ai une erreur nullPointerException). Je pense que c'est dû à un problème de "scope" il le prendrait pour la request au lieu de la session.
Y aurait-il une autre solution que de passer par un button? J'aurais préféré conserver mon ActionForm entre mes deux requêtes http plutot que de passer les éléments dans la request; est-ce réellement possible?
Code de mon Action:
Code partiel de ma jsp
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78 public class RechercheAction extends DispatchAction { /** * This is the main action called from the Struts framework. * @param mapping The ActionMapping used to select this instance. * @param form The optional ActionForm bean for this request. * @param request The HTTP Request we are processing. * @param response The HTTP Response we are processing. * @throws javax.servlet.ServletException * @throws java.io.IOException * @return */ public ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { /////////////////////////////// // Récupération de la facade // /////////////////////////////// // Récupération de l'EJB SESSION STATELESS CtlVisualiserCompostages CtlVisualiserCompostagesLocalHome CtlVisualiserHome; CtlVisualiserCompostagesLocal CtlVisualiserFacade; try { Context context =InitContext.getInitContext().getInitialContexte(); // Le lookup effectue une recherche dans l'annuaire JNDI, pour trouver l'objet Facade, et il nous le retourne CtlVisualiserHome = (CtlVisualiserCompostagesLocalHome) context.lookup("java:comp/env/ejb/local/CtlVisualiserCompostages"); CtlVisualiserFacade = (CtlVisualiserCompostagesLocal)CtlVisualiserHome.create(); } catch(NamingException e) { throw new ServletException("Error looking up home", e); } catch(CreateException e) { throw new ServletException("Error looking up home", e); } // Reste à faire : récupération du user sur l'OID pour gestion du profil // return mapping.findForward("init_success"); } public ActionForward Chercher (ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { /////////////////////////////// // Récupération de la facade // /////////////////////////////// // Récupération de l'EJB SESSION STATELESS CtlVisualiserCompostages CtlVisualiserCompostagesLocalHome CtlVisualiserHome; CtlVisualiserCompostagesLocal CtlVisualiserFacade; try { Context context =InitContext.getInitContext().getInitialContexte(); // Le lookup effectue une recherche dans l'annuaire JNDI, pour trouver l'objet Facade, et il nous le retourne CtlVisualiserHome = (CtlVisualiserCompostagesLocalHome) context.lookup("java:comp/env/ejb/local/CtlVisualiserCompostages"); CtlVisualiserFacade = (CtlVisualiserCompostagesLocal)CtlVisualiserHome.create(); RechercheActionForm rechercheForm = (RechercheActionForm) form; rechercheForm.setNumDpt("36"); System.out.println(rechercheForm.getNumDpt()); } catch(NamingException e) { throw new ServletException("Error looking up home", e); } catch(CreateException e) { throw new ServletException("Error looking up home", e); } // Reste à faire : récupération du user sur l'OID pour gestion du profil // return mapping.findForward("init_success"); } }
Voilà si vous aviez une piste pour régler ces deux problèmes ce serait super.
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71 <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" > <%@ page contentType="text/html;charset=utf-8"%> <%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %> <%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %> <html xmlns="http://www.w3.org/1999/xhtml"> <html:base /> <html:html locale="true"> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <title>--</title> <style type="text/css"> <!-- @import url("pmic.css"); --> </style> </head> <body> <div id="container"> <!-- header --> <div id="header"> <h1>Title here</h1> <html:form action="/Recherche" name="rechForm" type="pmicstruts.RechercheActionForm"> <fieldset> <legend>Recherche</legend> <ul> <li> <div id="dpt"> <fieldset> <legend>Département </legend> <% /* Construction de la liste des inputs */ // Construction de la liste des départements // le département coché par défaut doit être préalablement défini dans le form associé String[] liste_dpt = new String[]{"18","28","36","37","41","45","0"}; for (int i=0; i < liste_dpt.length; i++){ if (liste_dpt[i] != "0" ){ %> <p><html:radio name="rechForm" property="numDpt" value="<%=liste_dpt[i]%>" /><%=liste_dpt[i] %></html:radio></p> <% } else { %> <p><html:radio name="rechForm" property="numDpt" value="<%=liste_dpt[i]%>" />Tous</html:radio></p> <% } } %> </fieldset> </div> </li> <li> <div id="recherche"> <fieldset> <ul> <li> <ul> <li><div id="spacer3"> </div></li> <li><div class="subm"> <html:submit property="ActionRecherche" > <bean:message key="button.search"/> </html:submit> </div></li> </ul> </li> </ul> </fieldset> </div> </li> </ul> </fieldset> </html:form> </div> </div> </body> </html:html>
Partager