Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2626 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [Struts] 1ere application [RESOLU]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Struts] 1ere application [RESOLU]

n°1232215
Zogzog4
Posté le 27-10-2005 à 11:06:02  profilanswer
 

Bonjour,
 
Je tente de réaliser une application untra-simple avec Struts. Malgré la documentation, j'éprouve quelques difficultés.
 
J'ai suivi à la lettre l'exemple (pourtant tres clair) présenté ici:
http://www.infini-fr.com/Sciences/ [...] eraux.html
 
Je me connecte à un formulaire de Login ==> les informations sont copiées dans un FormBean => ... et c'est ici que rien ne va plus: la classe Action associée ne s'execute pas. Enfin, rien  ne se produit, en fait.  
Conclusion: j'arrive à une page blanche contenant le code suivant:

Citation :

<html><body></body></html>


(D'ou vient ce code?)
 
Je suis parti de l'application Struts-blank livrée avec Structs
Voici les sources:
 
login.jsp (le fichier amorce)

Citation :


<%@ page language="java" import="java.util.*"  %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<html>
    <head>
        <title>Veuillez vous identifier</title>
    </head>
    <body>
 
        <h1 align="center">Veuillez votre identifier</H1>
 
        <div align="center">
            <html:form action="login.do" method="POST" focus="username">
                Logon : <html:text property="username" /> <BR/>
                Password : <html:password property="password" /> <BR/>
                <html:submit property="submit" />
     </html:form>
        </div>
    </body>
</html>


 
le fichier LoginForm associé

Citation :


import org.apache.struts.action.*;
 
public class LoginForm extends ActionForm {
 private String m_username = "root";
 private String m_password = "azerty";
 
 public String getUsername() {
  System.out.println("On passe par UserBean.getUsername !" );
  return this.m_username;
 }
 public void setUsername(String username) {
  System.out.println("On passe par UserBean.setUsername !" );
  this.m_username = username;
 }
 public String getPassword() {
  System.out.println("On passe par UserBean.getPassword !" );
  return this.m_password;
 }
 public void setPassword(String password) {
  System.out.println("On passe par UserBean.setPassword !" );
  this.m_password = password;
 }
}


 
Le fichier LoginAction (qui ne s'execute jamais)

Citation :


import javax.servlet.http.*;
import org.apache.struts.action.*;
 
public class LoginAction extends Action {
 
    public ActionForward perform(
 ActionMapping mapping, ActionForm _form,
 HttpServletRequest request, HttpServletResponse response
    ) throws Exception {
        // On traite la requête cliente
 LoginForm form = (LoginForm) _form;
 System.out.println("Struts in action "
      + form.getUsername() + " - " + form.getPassword());
        // On redirige vers la vue adaptée
 return mapping.findForward("Connected" );
    }
}


 
 
Le fichier Connected.jsp:

Citation :

<%@ page language="java" import="java.util.*"  %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<html>
    <head>
 <title>Confirmation de connexion</title>
    </head>
    <body>
        <h1 align="center">Confirmation de connexion</H1>
 
        <div align="center">
         Bonjour Mr <bean:write name="LoginForm" property="username" />
        </div>
 
    </body>
</html>


 
Et pour finir, struts-config.xml ...dans ses differentes versions, qui aboutissent au meme resultat!
Version 1:

Citation :


<struts-config>
 <form-beans>
  <form-bean name="LoginForm" type="LoginForm" />
 </form-beans>
 
 <global-forwards>
  <forward name="Connected" path="/Connected.jsp" />
 </global-forwards>
 
 <action-mappings>
  <action path="/login"
   name="LoginForm"
   type="LoginAction"
   scope="request" >
  </action>
 </action-mappings>
</struts-config>


 
version2:

Citation :


<struts-config>
 <form-beans>
  <form-bean name="LoginForm" type="LoginForm" />
 </form-beans>
 
 <action-mappings>
         <action path="/login"
       name="LoginForm"
       type="LoginAction"
       scope="request" >
      <forward name="Connected" path="/Connected.jsp" />
         </action>  
 </action-mappings>
</struts-config>


 
version3:

Citation :

  <action path="/login"
   name="LoginForm"
   type="LoginAction">
   <forward name="Connected" path="/Connected.jsp" />
  </action>


 
L'exemple est quand meme archi-simple  :whistle:  
Et pourtant, pas moyen!!!
 
Il semblerait que le Bean de gestion du Formulaire soit en cause, car quand je fais le test avec un lien unique (sans Fields, sans LoginForm), ca fonctionne. Mais sur les exemples fournis dans la distribution, je ne vois pas ce qui change...  
 
Please, help  :sweat:


Message édité par Zogzog4 le 05-11-2005 à 09:00:46
mood
Publicité
Posté le 27-10-2005 à 11:06:02  profilanswer
 

n°1234187
hydrogene
Posté le 29-10-2005 à 18:31:17  profilanswer
 

Dans login.jsp essaye de mettre un slash devant login.do.
Sinon regarde les logs de tomcat pour voir si il ne te met pas une erreur.
Ton login.jsp et connected.jsp sont bien à la racine de l'application ?
 
Sinon je pense qu'il faut 2 actions : une pour afficher Login.jsp en tapant welcome.do (par exemple) et une autre pour afficher Connected.jsp en cliquant sur submit (action login.do). En effet, Struts passe par des actions par l'intermediaire du controlleur qui te redirige vers la vue ... je pense qu'il ne faut pas afficher directement une JSP.


Message édité par hydrogene le 29-10-2005 à 18:33:13
n°1234206
hydrogene
Posté le 29-10-2005 à 18:59:56  profilanswer
 

Ah nan je sais c'est koi : la methode dans l'Action c'est pas perform mais execute !

n°1234725
Zogzog4
Posté le 31-10-2005 à 09:08:02  profilanswer
 

hydrogene a écrit :

Ah nan je sais c'est koi : la methode dans l'Action c'est pas perform mais execute !


 
Merci beaucoup :)
Effectivement, de nombreux exemples utilsent "execute", et le manuel confirme!
J'ai simplement remplace le perform par execute, et ca a plante. Mais c'est encourageant, car au moins il y a un message d'erreur identifie sur lequel je peux travailler  :lol: . Avant, je changeais de nombreux parametres sans resultat  :fou:  
 
Merci encore  :)  
 :jap:

n°1234770
Zogzog4
Posté le 31-10-2005 à 10:05:58  profilanswer
 

Ok, ca fonctionne!
Je tournais autour depuis des jours, et je n'avais pas remarque le "perform"!
Un grand merci!  :)  :jap:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [Struts] 1ere application [RESOLU]

 

Sujets relatifs
Recherche du maximum d une liste de nombres[resolu]format de cellule excel [résolu]
[RESOLU] Struts iterate et options[ PHP ][ Resolu ] Upload et verification d'un fichier binaire
[Résolu][VBA] Problème de "" ...struts validator
numéro de feuille variable [Résolu]Textes dynamiques chinois/français [resolu]
RESOLU - [EXCEL-VBA] Comment exécuter une macro si excel perd le focus 
Plus de sujets relatifs à : [Struts] 1ere application [RESOLU]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR