2016-11-08 2 views
-1

J'essaie d'utiliser SpringMVC pour gérer un formulaire mais maintenant je suis coincé et je suis là pour vous demander de l'aide. Lorsque l'utilisateur soumet le formulaire, mon contrôleur renvoie la page de résultat jsp et l'utilisateur peut vérifier ce qu'il a rempli. Dans cette page de résultat, j'ai 2 boutons, un pour envoyer définitivement le formulaire et un pour le modifier.Spring MVC: Comment gérer l'obtention d'un objet java à partir d'une requête GET?

Voici mon problème: lorsque je clique sur modifier tous les champs du formulaire sont à nouveau vides et je voudrais garder la valeur renseignée par l'utilisateur.

Mon contrôleur:

@Controller 
@RequestMapping("/adhesion") 
public class FormController { 

//Send the form 
    @RequestMapping(method = RequestMethod.GET) 
    public String getFormulaire(@RequestParam(value = "user", required = false) T_demande_adhesion User, Map<String, Object> model) { 
     System.out.println("user" + User); //Null everytime 
     model.put("user", User); 
     System.out.println("Envoi formulaire !"); 
     return "formulaireAdhesion"; 
    } 

//Handle the form 
    @RequestMapping(method = RequestMethod.POST) 
    public String gestionAdhesion(@ModelAttribute("formAdhesion") @Valid T_demande_adhesion user, BindingResult erreurForm, Map<String, Object> model) 
      throws ServletException, IOException { 


     final String CHEMIN_DOC_APP = "C:/DocumentsApp/"; 
     // Form JSP page 
     final String FORMULAIRE_ADHESION = "formulaireAdhesion"; 
     // Result page 
     final String AFFICHER_RESULT = "afficherResult"; 

     // Objet de validation du formulaire  
     ValidationDmdAdhesion demandeAdhesion = new ValidationDmdAdhesion(); 

//Return AFFICHER_RESULT or FORMULAIRE_ADHESION 
     String resultat = demandeAdhesion.validationUser(user, erreurForm, model, FORMULAIRE_ADHESION, AFFICHER_RESULT, CHEMIN_DOC_APP ); 

     //putting the object to the request 
     model.put("user", user); 

     return resultat; 

    } 
} 

dans le côté JSP j'ai ajouté le paramètre 'Utilisateur' dans la demande: '

<input type="button" value="Modifier" onclick="document.location.href='<c:url value="adhesion?user=${user}"/>';" class="boutonAdhesion" /> 

' Mais cela me envoyer une chaîne et l'URL est:

/[email protected] 

Lorsque l'utilisateur clique sur le bouton Modifier (lequel est dans la page résultat), je voudrais obtenir cet objet @ModelAttribute("formAdhesion") @Valid T_demande_adhesion user sur la demande GET pour remplir le formulaire, dans le but d'éviter à l'utilisateur de mettre à nouveau les mêmes informations. Toute aide?

Un extrait de la forme:

<label for="nom">Nom <span class="requis">*</span></label><input type="text" id="nom" name="identite.nom" value="<c:out value ="${user.identite.nom}"/>" size="35" maxlength="30" /> <spring-ext:errors path="identite.nom" class="erreur" firstErrorOnly="true"/> Il est ici: value="<c:out value ="${user.identite.nom}"/> que je veux obtenir la valeur de nom.

Désolé pour l'anglais.

Frenchy.

+0

Je pense que l'attribut 'onclick' de votre balise' input' se termine prématurément. Je pense qu'il se termine ici: 'onclick =". Document.location.href = ' Birchlabs

+0

Je pense que onclick' doit être échappé comme ceci: 'onclick =" document.location.href = ''; "' – Birchlabs

+0

Cela ne peut pas fonctionner si je mets le " \ "juste après' value = ' – akuma8

Répondre

0

Lorsque je clique sur Modifier tous les champs du formulaire sont à nouveau vide et Je voudrais garder la valeur remplie par l'utilisateur

Parce que les données de formulaire est déjà disponible sur la page à côté client, il n'y a aucune signification de soumettre à nouveau le formulaire au serveur & afficher les mêmes données, ce qui est un voyage aller-retour inutile du client au serveur, par exemple,

Pour conserver les données sur le formulaire, ne pas soumettre le formulaire au serveur/contrôleur lui-même. Comment puis-je vérifier la validation de l'information remplie sans soumettre le formulaire?

Comment puis-je les afficher dans ma page de résultats?

Il n'est pas nécessaire de valider les données que l'utilisateur est en train de modifier. Ainsi, la validation du formulaire se fera seulement après que l'utilisateur a terminé les modifications et clique sur Soumettre. Une fois les validations réussies/échouées, vous pouvez afficher le résultat sur la page de résultats.

+0

C'est une bonne suggestion, mais comment puis-je vérifier la validation des informations remplies sans soumettre le formulaire? Comment puis-je les afficher dans ma page de résultats? – akuma8

+0

Vous pouvez regarder y la réponse ci-dessus – developer

+0

C'est une bonne idée, mais le problème sera le même si la validation envoie une erreur dont j'ai besoin pour rediriger l'utilisateur vers le formulaire. – akuma8

0

Dans ce cas, je n'ai pas trouvé d'autre moyen que d'utiliser @SessionAttributes. Dans ce point de mon application, je n'ai pas utilisé une session mais il semble qu'il n'y a pas d'autre moyen.