Vérifier la saisie d'un champ java

Jean-Marc -  
 Jean-Marc -
Bonjour,

J'ai créé un formulaire de saisie en java.

L'insertion marche bien. Jusqu'ici tout va bien.

Maintenant, je voudrai vérifier si la nature de chaque champ est valide.

Par exemple pour remplir le nom de la personne, je voudrai vérifier que ce sont bien des lettres qui sont saisies dans le champ et non des entiers.

Je pense qu'il faut que je fasse la vérif avec un pattern mais je n'y connais rien la dedans...

Merci de m'aider les amis

9 réponses

Résumé de la discussion

La problématique porte sur la validation des champs dans un formulaire Java, en vérifiant que le nom et le prénom ne contiennent que des lettres et des espaces. Des propositions s’appuient sur des expressions régulières via Pattern.matches, avec des exemples comme [a-zA-Z -]* et des conseils pour adapter le motif selon les contraintes. Des exemples de code montrent aussi des validations supplémentaires, telles que la gestion des nombres et des dates, et l’usage de JOptionPane pour les messages d’erreur. En cas d’erreur de format, certaines réponses évoquent l’amélioration du flux utilisateur et les éventuels écarts avec le format stocké en base de données.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    Effectivement, regardes du côté des Pattern

    Exemple :
    boolean b = Pattern.matches("[a-zA-Z -]*","Bernard Henri-Levy"); // true
    Evidemment, tu peux affiner le Pattern selon ce que tu veux...
    2
  2. KX Messages postés 19031 Statut Modérateur 3 020
     
    J'espère ne rien avoir oublié ;-)

    private void btValider1_click ()
    {	
    	Groupe numGroupe = (Groupe) jComboBoxNumeroGroupe.getSelectedItem();
    	if (numGroupe == null)
    	{
    		JOptionPane.showMessageDialog(null, "Sélectionnez un numéro de groupe" );
    		return;
    	}		
    
    	/////////////
    	
    	String resp = (String) jComboBoxResponsabilité.getSelectedItem();
    	if (resp == null) 
    	{
    		JOptionPane.showMessageDialog(null, "Sélectionnez une responsabilité" );
    		return;
    	}				
    
    	/////////////
    		
    	String titre = (String)jComboBoxTitre.getSelectedItem();		
    	if (titre == null)
    	{
    		JOptionPane.showMessageDialog(null, "Sélectionnez un titre de civilité" );
    		return;
    	}
    
    	/////////////
    	
    	int numMembre;
    	try
    	{
    		numMembre = Integer.parseInt(jTextFieldNumeroMembre.getText());
    	}
    	catch (NumberFormatException e)
    	{
    		JOptionPane.showMessageDialog(null, "Rentrez un numéro de membre" );
    		return;		
    	}
    
    	/////////////
    	
    	String nomMembre = jTextFieldNomMembre.getText();
    	if (!Pattern.matches("[A-Za-Z -]*", nomMembre)
    	{
    		JOptionPane.showMessageDialog(null, "Rentrez un nom de membre" );
    		return;
    	}
    
    	/////////////
    	
    	String prenomMembre = jTextFieldPrenomMembre.getText();
    	if (!Pattern.matches("[A-Za-Z -]*", prenomMembre)
    	{
    		JOptionPane.showMessageDialog(null, "Rentrez un prénom de membre" );
    		return;
    	}
    
    	/////////////
    	
    	Date date;
    	try
    	{
    		date = Date.valueOf(jTextFieldDate.getText());
    	}
    	catch (IllegalArgumentException e)
    	{
    		JOptionPane.showMessageDialog(null, "Rentrez une date au format aaaa-mm-jj" );
    		return;
    	}
    	
    	//////////////////////////////////////////
    
    	try
    	{
    		Insertion.insertResa( numMembre, numGroupe.getnumGroupe(), resp, null, nomMembre, prenomMembre, titre );
    	    JOptionPane.showMessageDialog(this, "Ajout effectué" , "Message", JOptionPane.INFORMATION_MESSAGE );
    	}
    	catch(Exception e)
    	{
    		e.printStackTrace();
    	    JOptionPane.showMessageDialog(this, "Ajout non-effectué\n\n"+e , "Message", JOptionPane.ERROR_MESSAGE );
    	    return;
    	}
    
        //Remise des champs à vide
        jTextFieldNumeroMembre.setText("");
        jTextFieldDate.getText.setText("");
        jTextFieldNomMembre.setText("");
        jTextFieldPrenomMembre.setText("");
        jComboBoxNumeroGroupe.setSelectedIndex(-1);
        jComboBoxResponsabilité.setSelectedIndex(-1);
        jComboBoxTitre.setSelectedIndex(-1);
        
        //Grisonne les champs
        jTextFieldDate.setEnabled(false);
        jTextFieldNomMembre.setEnabled(false);
        jTextFieldNumeroMembre.setEnabled(false);
        jTextFieldPrenomMembre.setEnabled(false);
        jComboBoxNumeroGroupe.setEnabled(false);
        jComboBoxResponsabilité.setEnabled(false);
        jComboBoxTitre.setEnabled(false);
        jButtonConfirmer.setEnabled(false);
        jButtonAnnuler.setEnabled(false);
    }
    2
  3. Jean-Marc
     
    Merci de ta réponse très rapide....

    Y'a que ça à mettre pour vérifier si c'est un string???
    1
    1. KX Messages postés 19031 Statut Modérateur 3 020
       
      "Vérifier que c'est un String ?" Ce sera forcément un String... Oo !
      0
    2. Jean-Marc
       
      Oui que c'est bien un string!

      Par contre je ne sais pas ou le mettre dans mon code vu que je fais déja une vérif sur le champ pour voir si le champ n'est pas vide....

      Désolé de te déranger mais je n'y connais pas grand chose en java, je débute....

      Voici mon code pour la vérif :

       private void btValider1_click ()
      	   {
      		 Groupe numGroupe = (Groupe)jComboBoxNumeroGroupe.getSelectedItem();
      		 String resp = (String)jComboBoxResponsabilité.getSelectedItem();
      		 String titre = (String)jComboBoxTitre.getSelectedItem();
      		 int numMembre = Integer.parseInt( jTextFieldNumeroMembre.getText());
      		 String nomMembre = jTextFieldNomMembre.getText();
      		 String prenomMembre = jTextFieldPrenomMembre.getText();
      			
      		 
      	       if (numGroupe == null)
      			{
      				JOptionPane.showMessageDialog(null, "Sélectionnez un numéro de groupe" );
      				return;
      			}			
      			 
      			else if (resp == null) 
      				{
      					JOptionPane.showMessageDialog(null, "Sélectionnez une responsabilité" );
      					return;
      				}				
      				
      				 else if (titre == null)
      					{
      						JOptionPane.showMessageDialog(null, "Sélectionnez un titre de civilité" );
      						return;
      					}
      
      	       				/*else if (numMembre.equals(""))
      								{
      									JOptionPane.showMessageDialog(null, "Rentrez un nom de membre" );
      									return;
      								}*/
      
      		
      				 				else if (nomMembre.equals(""))
      				 					{
      				 						JOptionPane.showMessageDialog(null, "Rentrez un nom de membre" );
      				 						return;
      				 					}
      			
      				 						else if (prenomMembre.equals(""))
      				 						{
      				 							JOptionPane.showMessageDialog(null, "Rentrez un prénom de membre" );
      				 							return;
      				 						}
      			
      		 //Date date = jTextFieldDate.getText();
      
      		 try
      	       {
      	           Insertion.insertResa( numMembre, numGroupe.getnumGroupe(), resp, null, nomMembre, prenomMembre, titre );
      	           JOptionPane.showMessageDialog(this, "Ajout effectuée" , "Message", 
      	           								JOptionPane.INFORMATION_MESSAGE );
      	       }
      	       catch(Exception e)
      	       {
      	          System.out.println("Exception " + e.getMessage());
      	          JOptionPane.showMessageDialog(this, "Ajout NON effectuée" , "Message", 
      	       		   						  JOptionPane.INFORMATION_MESSAGE );
      	       }       
      	       //Remise des champs à vide
      	       jTextFieldNumeroMembre.setText("");
      	       //jTextFieldDate.getText.setText("");
      	       jTextFieldNomMembre.setText("");
      	       jTextFieldPrenomMembre.setText("");
      	       jComboBoxNumeroGroupe.setSelectedIndex(-1);
      	       jComboBoxResponsabilité.setSelectedIndex(-1);
      	       jComboBoxTitre.setSelectedIndex(-1);
      	       //Grissonne les champs
      	       jTextFieldDate.setEnabled(false);
      		   jTextFieldNomMembre.setEnabled(false);
      		   jTextFieldNumeroMembre.setEnabled(false);
      		   jTextFieldPrenomMembre.setEnabled(false);
      		   jComboBoxNumeroGroupe.setEnabled(false);
      	       jComboBoxResponsabilité.setEnabled(false);
      		   jComboBoxTitre.setEnabled(false);
      		   jButtonConfirmer.setEnabled(false);
      		   jButtonAnnuler.setEnabled(false);
      }
      0
  4. Jean-Marc
     
    J'ai cours d'anglais t'es la à partir de 13h??

    En tout cas un grand grand merci pour ton code je vais le tester et je te tien au courant ;)

    Ça fais plaisir des gens comme toi...

    Encore merci à toute à l'heure
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Jean-Marc
     
    J'ai essayé le code et j'ai une erreur au niveau du pattern. Pourtant je l'ai importé.

    Voici l'erreur lorsque j'essaye d'ajouter un membre :

    Exception in thread "AWT-EventQueue-1" java.util.regex.PatternSyntaxException: Illegal character range near index 6
    [A-Za-Z -]*
    ^

    MERCI
    0
    1. KX Messages postés 19031 Statut Modérateur 3 020
       
      Simple erreur de syntaxe de ma part, il faut écrire [A-Za-z -]*
      0
    2. Jean-Marc
       
      ok je vais tester par contre pour la date dans la syntaxe :

      date = Date.valueOf(jTextFieldDate.getText());

      il me souligne valueOf en rouge et je n'arrive pas a remédier au problème!!!

      Merci KX
      0
    3. KX Messages postés 19031 Statut Modérateur 3 020
       
      Tu as dû faire import java.util.Date or moi j'ai utilisé java.sql.Date.
      En fait la plupart des méthodes de ces deux classes sont dépréciées, l'idéal serait d'utiliser java.text.SimpleDateFormat et la méthode parse
      0
    4. Jean-Marc
       
      ok je vais tester.

      Je te tiens au courant.

      Merci de ton aide très précieuse KX.

      A toute
      0
    5. Jean-Marc
       
      Merci pour le pattern pas d'erreur a déplorer.

      Maintenant pour la date, j'ai beau rentrer des dates (12/01/1988 ou 1988-01-12) il me met que le format n'est pas bon!!pourquoi???

      Est ce que cela peut être du à mon format de date défini dans ma base de données???

      Défini comme ça dans ma base de données : "DATENAISSANCEMEMBRE" DATE,

      Merci
      0
  7. Profil bloqué
     
    Merci MrJava je vais regarder ça
    0
  8. Jean-Marc
     
    Grefer2luxe???

    Merci pour le lien!!
    0
  9. Profil bloqué
     
    Oups désolé je me suis trompé de message!Moi aussi j'ai un problème en java c'est pour ça!!rien de grave.

    Bonne chance pour ton problème
    0
  10. Jean-Marc
     
    C'est pas grave nous sommes la pour nous entre aider^^
    0
    1. Jean-Marc
       
      Je me permet de relancer ce sujet vu que j'ai trouver d'ou venait l'erreur de la date mais je ne sais comment régler le problème.
      0
    2. KX Messages postés 19031 Statut Modérateur 3 020
       
      Il me semblait avoir déjà expliquer comment faire la date, mais bon redis moi où tu bloques je te (ré)expliquerai...
      0
    3. Jean-Marc
       
      Concernant la date, j'ai trouvé quelque chose de fructueux^^.

      En effet, dans mon fichier d'insertion de mes données dans la base de données, j'ai remarqué que les dates étaient insérées comme ceci :

      Insert into MEMBRE (NUMPERSONNE,NUMGROUPE,RESPONSABILITEMEMBRE,DATENAISSANCEMEMBRE,NOMPERSONNE,PRENOMPERSONNE,TITRECIVILITE) values (6,12,'Maquilleuse ',to_timestamp('10/12/90 00:00:00,000000000','DD/MM/RR HH24:MI:SS,FF'),'Le Joliff ','Noelie ','Mlle');

      Insert into MEMBRE (NUMPERSONNE,NUMGROUPE,RESPONSABILITEMEMBRE,DATENAISSANCEMEMBRE,NOMPERSONNE,PRENOMPERSONNE,TITRECIVILITE) values (8,6,'Chauffeur ',to_timestamp('21/05/88 00:00:00,000000000','DD/MM/RR HH24:MI:SS,FF'),'Letty ','Nicolas ','Mr');

      Tu peux voir qu'il y a 00:00:00,000000000 rajouté dans la date alors que moi je ne souhaite insérer que la date c'est à dire to_timestamp('21/05/88','DD/MM/RR').

      Et je pense donc qu'il faudrait remplacer le to_timestamp par to_date. Je me trompe???

      Et voila pourquoi ça affiché tous ces zéros lors de l'éditiond e al date de naissance du membre.
      0
    4. KX Messages postés 19031 Statut Modérateur 3 020
       
      Euh là c'est un problème de base de données, et je suis incompétent...
      Si ton problème avait été dans la partie Java (remplir les zéros par autre chose) j'aurais pu t'aider, mais là non...
      0
    5. Jean-Marc
       
      okok je vais voir.je te tien au courant.

      Un grand merci à toi quand même
      0