Précédent   Forum du club des développeurs et IT Pro > Java > Développement Web en Java
Développement Web en Java Forum d'entraide sur les technologies Web de Java (JSP/Servlets, Portlets, Applets, frameworks Web, etc.) Avant de poster -> FAQ Java EE
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 18/10/2012, 10h57   #1
xoftob
Membre à l'essai
 
Homme
Étudiant
Inscription : octobre 2012
Messages : 48
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2012
Messages : 48
Points : 21
Points : 21
Par défaut [Struts 2] Afficher un message sur un champ incomplet

Bonjour,

Je suis débutant en JEE et je viens de commencer à utiliser Struts 2.

J'aimerais, lorsque par exemple un client essaye de valider ses informations dans un formulaire, qu'un message s'affiche devant un champ, lorsqu'il a oublié de le remplir:

client.jsp
Code :
1
2
3
4
5
6
7
8
...
<table>
<s:form action="register" method="post">
<tr>
   <td>Nom: </td>
   <td><s:textfield id="name" name="name"></s:textfield></td>
   <td><s:property value="erreurs['name']"/></td>
</tr></table>...
ClientAction.java
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
...
public String enregistrer(){
        String reponse="";
        try{
            reponse=validerName(name);
        }catch(Exception e){
            erreurs.put(name, e.getMessage());
        }
        return reponse;
    }
private String validerName(String nom) throws Exception{
        if(nom.equalsIgnoreCase("")){
            return "input";
        }else
        return "success";
    }
...
Alors quand j'exécute le code affiché ci-dessus et je valide sans remplir le champ "nom", il n'affiche pas le message devant le champ nom.

Quelqu'un saurait-il m'indiquer comment résoudre ce problème ?

Merci d'avance.
xoftob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2012, 12h40   #2
pracede2005
Membre confirmé
 
Homme Davy
Ingénieur développement logiciels
Inscription : octobre 2006
Messages : 287
Détails du profil
Informations personnelles :
Nom : Homme Davy
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Communication - Médias

Informations forums :
Inscription : octobre 2006
Messages : 287
Points : 228
Points : 228
Il t'affiche quoi ?

Déja renommes ta methode validerName en validate. Et dis nous ce que ça donne.
__________________
Merci de lire les règles du forum et surtout celle là Message clair et précis.
Evitons les ctrl c ctrl v => Ne sortons pas les codes de leur contexte sinon ça ne marche pas.
pracede2005 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2012, 12h55   #3
xoftob
Membre à l'essai
 
Homme
Étudiant
Inscription : octobre 2012
Messages : 48
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2012
Messages : 48
Points : 21
Points : 21
Il m'affiche la page client.jsp mais j'aimerais qu'il m'affiche l'erreur devant le champ nom.

Pour la méthode, je ne sais pas pourquoi je devrais changer son nom mais je l'ai fais et ça n'a rien changé.
xoftob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2012, 19h03   #4
xoftob
Membre à l'essai
 
Homme
Étudiant
Inscription : octobre 2012
Messages : 48
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2012
Messages : 48
Points : 21
Points : 21
Toujours personne pour me guider ? :/
xoftob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/10/2012, 13h22   #5
pracede2005
Membre confirmé
 
Homme Davy
Ingénieur développement logiciels
Inscription : octobre 2006
Messages : 287
Détails du profil
Informations personnelles :
Nom : Homme Davy
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Communication - Médias

Informations forums :
Inscription : octobre 2006
Messages : 287
Points : 228
Points : 228
Citation:
Envoyé par xoftob Voir le message
Il m'affiche la page client.jsp mais j'aimerais qu'il m'affiche l'erreur devant le champ nom.

Pour la méthode, je ne sais pas pourquoi je devrais changer son nom mais je l'ai fais et ça n'a rien changé.
Je t'ai demandé de changer de nom car les intercepteurs Struts executent la methode validate (validateEnregistrer, ...) t avant d'executer enregistrer. C'est dans la doc struts je crois.
Montres nous ton fichier struts.xml et le code source généré de ta page.
__________________
Merci de lire les règles du forum et surtout celle là Message clair et précis.
Evitons les ctrl c ctrl v => Ne sortons pas les codes de leur contexte sinon ça ne marche pas.
pracede2005 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/10/2012, 17h35   #6
xoftob
Membre à l'essai
 
Homme
Étudiant
Inscription : octobre 2012
Messages : 48
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2012
Messages : 48
Points : 21
Points : 21
Citation:
Envoyé par pracede2005 Voir le message
Je t'ai demandé de changer de nom car les intercepteurs Struts executent la methode validate (validateEnregistrer, ...) t avant d'executer enregistrer. C'est dans la doc struts je crois.
Montres nous ton fichier struts.xml et le code source généré de ta page.
Bonjour pracede2005,

Bon voici le fichier struts.xml
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="true" />
	<package name="jsp" namespace="/jsp" extends="struts-default">
		<action name="register" class="ma.actions.ClientAction" method="enregistrer">
        	<result name="success" >/jsp/afficherClient.jsp</result>
        	<result name="input">/jsp/client.jsp</result>  
    	</action>  
	</package>
</struts>
Voici le code de Client.jsp
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
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib prefix ="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Ajouter Client</title>
</head>
<body>
	<table>	
		<s:form action="register" method="post">
		<tr>
			<td><h3>Créer un client</h3></td>
		</tr>
		<tr>
			<td>Nom: </td>
			<td><s:textfield id="name" name="name"></s:textfield></td>
			<td><s:property value="erreurs['name']"/></td>
		</tr>
</s:form>
	</table>
</body>
</html>
Voici le code de ClientAction.jsp
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
43
package ma.actions;
 
import java.util.HashMap;
import java.util.Map;
 
import ma.hibernate.Client;
 
import com.opensymphony.xwork2.ActionSupport;
 
public class ClientAction extends ActionSupport{
 
	private String name;
	private Map<String, String> erreurs = new HashMap<String, String>();
 
        public String getName() {
		return name;
	}
 
	public void setName(String name) {
		this.name = name;
	}
 
	public Map<String, String> getErreurs() {
        return erreurs;
        }
 
        public String enregistrer(){
		String reponse="";
		try{
			reponse=validate(name);
		}catch(Exception e){
			erreurs.put(name, e.getMessage());
		}
		return reponse;
	}
 
	private String validate(String nom) throws Exception{
		if(nom.equalsIgnoreCase("")){
			return "input";
		}else
		return "success";
	}
}
xoftob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/11/2012, 22h12   #7
Walkn
Nouveau Membre du Club
 
Homme
Inscription : décembre 2007
Messages : 62
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2007
Messages : 62
Points : 29
Points : 29
Bonsoir,

Concernant ton problème, il s'agit de validation Struts 2.

Or, en Struts 2 il y a plusieurs manière de faire de la validation de formulaire :
  1. Validation par Annotations
  2. Validation par xml
  3. Validation via "valide"

Ce sont les méthodes les plus courante.

Remarque : Il faut impérativement faire attention au fait d'avoir l'interceptor de validation définit dans la pile des interceptors.

Je te donnes différents liens qui pourront sûrement t'aider avec la validation de formulaire

http://struts.apache.org/2.0.14/docs...nnotation.html

http://struts.apache.org/2.3.4/docs/...alidation.html

http://struts.apache.org/2.2.3/docs/...using-xml.html

http://struts.apache.org/2.0.14/docs...nnotation.html

Si tu as d'autres questions n'hésite surtout pas. J'essayerai d'y répondre dans la mesure du possible.
Walkn est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 20h32.


 
 
 
 
Partenaires

Hébergement Web