Bonjour,

Je remets en route une vieille application qui n'a plus servi depuis 2 ans et qui était maintenue par une ex-collègue.

Je précise que je ne suis pas spécialiste de Java et encore moins des techniques modernes liées à ce langage.

L'application comprend un formulaire de saisie avec un contrôle des champs obligatoires, des champs numériques et des champs à mini et maxi.

Le bug, c'est que même avec un formulaire correctement renseigné, l'application renvoie ces erreurs :
Nom du module : champ numérique. Veuillez saisir un nombre.
Responsable 1 : champ numérique. Veuillez saisir un nombre.
Nombre min de stagiaires (> 0) : vous ne respectez l'intervalle de valeurs autorisé.
Nombre max de stagiaires (>= min stagiaires) : vous ne respectez l'intervalle de valeurs autorisé.
Mot de passe : champ numérique. Veuillez saisir un nombre.
Confirmation du mot de passe : champ numérique. Veuillez saisir un nombre.
Ce qui cloche, c'est que, par exemple, le champ du nom du module n'est évidemment pas un champ qui attend un nombre et cette erreur ne devrait pas apparaître.

Voici le bout de code JSP concernant le champ du nom du module :
Code JSP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
<span>Intitul&eacute; du module <b><span id="message2" class="red"><sup>(*)</sup></span></b> : &nbsp;&nbsp; <span class="annotation">100 caract. max</span>
	<br><span class="compteurCaracteres"><span id="nbCaracFI_NOM_LB">0</span> caract&egrave;re(s) saisi(s)</span>
	<!-- Message d'erreur si nom module vide -->
	<span id="messFI_NOM_LB" style="color:red;visibility:hidden;font-weight:bold">
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="<%=request.getContextPath()%>/images/stop.png" border="0" alt="" title=""> Saisissez un intitulé de module
	</span>
	<br><input type="text" size="100" name="FI_NOM_LB" id="FI_NOM_LB" maxlength="100" value="<%=utilitaires.strReplaceCaracteresSpeciauxHTML(maFiche.getFI_NOM_LB())%>" onkeyup="compteCaracteres('FI_NOM_LB','nbCaracFI_NOM_LB', 100)">	
</span>

Et voici le bout de code qui teste les champs numérique et qui construit le message d'erreur obtenu :
Code JSP : 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
for(var i = 0; i < f.length; i++)
	{
		var e = f.elements[i];
 
// Code faisant un premier contrôle sur les champs obligatoires vides puis...
 
// Recherche maintenant les champs supposés numériques
if (e.numeric || (e.min != null) || (e.max != null))
{
				var v = Number(e.value);
 
				if (isNaN(v))
				{
					// Si elle contient quelque chose alors il y a eu des erreurs
					intitule_obj_courant = recupNom(e);
					empty_fields += "\n " + intitule_obj_courant + " champ numérique. Veuillez saisir un nombre.";
					// Affichage du message d'erreur correspondant
					document.getElementById("mess"+ e.name).style.visibility="visible";
				}
				else
				{
					// c'est du numérique donc on vérifie les contraintes au niveau des valeurs :
					if (((e.min != null) && (v < e.min)) || ((e.max != null) && (v > e.max)))
					{
						// Si elle contient quelque chose alors il y a eu des erreurs
						intitule_obj_courant = recupNom(e);
						empty_fields += "\n " + intitule_obj_courant + " vous ne respectez l'intervalle de valeurs autorisé.";
						// Affichage du message d'erreur correspondant
						document.getElementById("mess"+ e.name).style.visibility="visible";
					}
					else
					{
						// On stocke les variables MIN et MAX stagiaires dans des variables pour pouvoir
						// vérifier à la fin que MAX >= MIN.
						if (e.name == "FI_MAXI_NB")
						{
							max_stag = v ;
						}
 
						if (e.name == "FI_MINI_NB")
						{
							min_stag = v ;
						}
 
						// Le message ne doit pas ou plus s'afficher
						document.getElementById("mess"+ e.name).style.visibility="hidden";
					}
				}
			}
}

Je me suis attardé sur le premier if et notamment sur e.numeric.
J'ai essayé de remplacer la ligne par celle-ci, sans succès :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
if (e.type == 'numeric' || (e.min != null) || (e.max != null))
Normalement, les champs de type text ne devraient pas être concernés par ce test, non ?