2016-11-08 5 views
-1

Ich versuche SpringMVC zu verwenden, um ein Formular zu bearbeiten, aber jetzt bin ich fest und ich bin hier, um um Ihre Hilfe zu bitten.Spring MVC: Wie verwaltet man ein Java-Objekt von einer GET-Anfrage?

Wenn der Benutzer das Formular abschickt, gibt mein Controller die Jsp-Ergebnisseite zurück und der Benutzer kann überprüfen, was er ausgefüllt hat. Auf dieser Ergebnisseite habe ich 2 Schaltflächen, eine um das Formular definitiv zu senden und eine um es zu ändern.

Hier mein Problem: wenn ich auf Ändern klicke, sind alle Felder des Formulars wieder leer und ich möchte den Wert vom Benutzer gefüllt halten.

Mein Controller:

@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; 

    } 
} 

In JSP Seite ich den Parameter 'User' in der Anfrage hinzugefügt: '

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

' Aber das mir eine Zeichenfolge senden und die URL ist:

/[email protected] 

Wenn der Benutzer auf Schaltfläche "Ändern" klickt (was ist in der Ergebnisseite), möchte ich dieses Objekt @ModelAttribute("formAdhesion") @Valid T_demande_adhesion user auf der GET-Anfrage erhalten, um das Formular auszufüllen, um zu vermeiden, dass der Benutzer dieselben Informationen wieder eingibt. Irgendwelche Hilfe?

Ein Auszug aus der Form:

<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"/> Es ist hier: value="<c:out value ="${user.identite.nom}"/>, dass ich den Wert von nom erhalten möchten.

Entschuldigung für das Englisch.

Frenchy.

+0

Ich denke, Ihr 'input'-Tag' onclick' Attribut endet vorzeitig. Ich denke, es endet hier: 'onclick =" document.location.href = ' Birchlabs

+0

Ich denke' onclick' muss wie folgt: 'onclick =" document.location.href = ''; " – Birchlabs

+0

Es kann nicht funktionieren, wenn ich die" \ "gleich nach' value = ' – akuma8

Antwort

0

Wenn ich auf ändern alle Felder des Formulars sind wieder leer und Ich möchte den Wert der

Benutzer gefüllt halten, da die Formulardaten auf der Seite bereits vorhanden ist Client-Seite, es gibt keine Bedeutung der Übermittlung des Formulars erneut an den Server & zeigen die gleichen Daten, die eine unnötige Hin-und Rückfahrt vom Client zum Server ist dh,

Um die Daten auf dem Formular zu halten, tun Sie nicht zu Übermitteln Sie das Formular an den Server/Controller selbst.

Wie kann ich die Validierung der ausgefüllten Informationen überprüfen, ohne das Formular zu senden? ? Wie kann ich sie auf meiner Ergebnisseite anzeigen?

Es ist nicht erforderlich, die Daten zu validieren, die der Benutzer sowieso ändern wird. Die Validierung des Formulars erfolgt also erst, nachdem der Benutzer die Änderungen abgeschlossen und auf Senden geklickt hat . Sobald die Validierungen erfolgreich sind/fehlgeschlagen sind, können Sie das Ergebnis auf der Ergebnisseite anzeigen.

+0

Es ist ein guter Vorschlag, aber wie kann ich die Validierung der ausgefüllten Informationen überprüfen, ohne das Formular zu senden? Wie kann ich sie auf meiner Ergebnisseite anzeigen? – akuma8

+0

Sie können y Antwort oben betrachten. – developer

+0

Es ist eine gute Idee, aber das Problem wird das gleiche sein, wenn die Validierung einen Fehler sendet, den ich den Benutzer an das Formular umleiten muss. – akuma8

0

In diesem Fall habe ich keinen anderen Weg als @SessionAttributes gefunden. In diesem Punkt meiner Anwendung habe ich keine Sitzung verwendet, aber es scheint, dass es keinen anderen Weg gibt.

Verwandte Themen