2017-02-06 3 views
2

Ich versuche PRG Muster zu verstehen und erstellte ein einfaches Formular, das Name und Alter des Benutzers akzeptiert. Und nach dem Senden möchte ich, dass der Begrüßungsbenutzername angezeigt wird, und beim Aktualisieren des Tabs sollte derselbe beibehalten werden. Nach der Aktualisierung wird jedoch nur Begrüßung angezeigt. Hier ist der CodeWie Post Post Redirect verwenden mit Feder mvc verwenden?

demoForm.jsp

<form action="/Spring_Hibernate_RegistrationAndLogin/prg1" method="post"> 
Name: <input type="text" name="uname"><br/><br/><br/> 
Age: <input type="text" name="age"><br/><br/><br/> 
<input type="submit" value="Done"/> 

succes.jsp

<h3>Hello ${name}</h3> 

Controller-Code

@RequestMapping(value="prg",method={RequestMethod.GET}) 
public ModelAndView demoForm(){ 
    System.out.println("in get"); 
    ModelAndView model=new ModelAndView("demoForm"); 
    return model; 
} 

@RequestMapping(value="/prg1",method={RequestMethod.GET}) 
public ModelAndView doGet(@ModelAttribute ("userName") String s){ 
    System.out.println("in get1"); 
    //String name=s; 

    ModelAndView model=new ModelAndView("succes"); 
    model.addObject("name", s); 
    return model; 
} 


@RequestMapping(value="/prg1",method={RequestMethod.POST}) 
public ModelAndView doPost(@RequestParam(name = "uname") String s,final RedirectAttributes redirectAttribute){ 
    System.out.println("in post1"); 
    ModelAndView model=new ModelAndView("redirect:/prg1"); 
    //model.addObject("uname", s); 
    redirectAttribute.addFlashAttribute("userName",s); 
    return model; 
} 

Jede Hilfe appriciated wird. Danke im Voraus.

Antwort

0

Flash-Attribute werden nicht zwischen Seitenaktualisierungen gespeichert. Um zu erreichen, was Sie wollen, können Sie Sitzungsattribute verwenden. Die einfachste Methode zum Implementieren ist das Hinzufügen von @SessionAttributes ("userName") zu Ihrer Controller-Klasse. Oder Sie können es manuell mit dem Anfrageobjekt manipulieren: request.getSession.setAttribute ("userName", s);

+0

Danke für den Vorschlag.Können Sie mir bitte mit Code-Snippet. – jagga

+0

Wenn Ihre Controller-Klasse definiert ist, fügen Sie einfach Folgendes hinzu: @SessionAttributes ("userName") in der nächsten Zeile nach der @Controller-Annotation. – loredana

0

Entweder auf die komplett neue Seite umleiten, die Ihre Erfolgsmeldung enthält, oder Ihre Erfolgsmeldung als session attribute speichern, die einen kürzeren Livezyklus hat als ein Attribut, das direkt auf die HTTP-Sitzung gesetzt wird. Werfen Sie einen Blick auf this question

+0

Ich bin auf eine komplett neue Seite succes.jsp umleiten. aber nicht bekommen eine gewünschte Ausgabe – jagga