IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Struts 1 Java Discussion :

[Débutante]Pb jndi.properties non trouvé+ question sur les DispatchAction


Sujet :

Struts 1 Java

  1. #1
    Invité
    Invité(e)
    Par défaut [Débutante]Pb jndi.properties non trouvé+ question sur les DispatchAction
    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 : 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");
      }
    }
    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
    <!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">&nbsp;</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>
    Voilà si vous aviez une piste pour régler ces deux problèmes ce serait super.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur Java
    Inscrit en
    Août 2007
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2007
    Messages : 197
    Par défaut
    salut,

    pour conserver le même formulaire entre plusieurs requêtes il te suffit de le spécifier là où est déclaré ton action associé à ton FormBean tu doit changer le scope request par un scope session.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <html:form action="/Recherche" name="rechForm" type="pmicstruts.RechercheActionForm" scope="session">
    cependant fait attention car il faudra prévoir de faire un reset du formulaire à un moment ou un autre... dans certains cas. car les données de ton formulaire vont bel et bien rester pendant toute la session.

    concernant ton fichier jndi.properties il faut que tu créé ce fichier toi même afin de spécifier les information pour se connecter. Tu dois donc mettre ce fichier dans ton class path. Je suis sûr qu'en cherchant sur le forum tu trouvera tout ça facilement.

    ++

  3. #3
    Invité
    Invité(e)
    Par défaut
    Super, mon objet ne se paume plus d'une requete à l'autre. Merci énormément.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. fichier properties non trouvé
    Par kifouillou dans le forum Langage
    Réponses: 42
    Dernier message: 15/02/2007, 13h47
  2. [Débutant] question sur les formulaires
    Par IDE dans le forum Access
    Réponses: 8
    Dernier message: 15/07/2006, 16h37
  3. [Débutant] Question sur les lumières
    Par Mandalar dans le forum DirectX
    Réponses: 10
    Dernier message: 04/01/2006, 13h49
  4. [parseur] [Débutant] Question sur les parseurs
    Par steph-n dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 02/05/2005, 19h17
  5. [débutant] question sur les #
    Par Ultros dans le forum C
    Réponses: 3
    Dernier message: 29/04/2004, 12h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo