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
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
Message édité par Zogzog4 le 05-11-2005 à 09:00:46