Basic Spring MVC Data Binding
Ich bin zu lernen, Spring MVC und ich habe überall gesucht um zu tun, die nur eine einfache Steuerung, um view-data-binding, aber nichts was ich versucht habe als Arbeit. Ich kann binden Ansicht posting zurück zu controller und ich kann sehen, dass die pojo-mit Eigenschaften, die es, aber wenn ich versuchte, fügen Sie das Objekt dem Modell habe ich nichts bekommen. Hier ist was ich habe, so weit:
Controller
@Controller
public class HomeController {
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(Model model) {
model.addAttribute(new Person());
return "home";
}
@RequestMapping(value="/about", method=RequestMethod.POST)
public void about(Person person, Model model)
{
model.addAttribute("person", person);
}
}
Klasse I binden wollen
public class Person {
private String _firstName;
private String _lastName;
private Date _Birthday;
//Set
public void setFirstName(String FirstName){this._firstName = FirstName; }
public void setLastName(String LastName){this._lastName= LastName; }
public void setBirthDate(Date BirthDate){ this._Birthday = BirthDate;}
//get
public String getFirstName(){return _firstName;}
public String getLastName(){return _lastName;}
public Date getBirthDate(){return _Birthday;}
}
View - Controller-zu-Form ! Arbeiten
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<html>
</head>
<body>
FirstName: ${model.person.getFirstName}
LastName: ${model.person.getLastName}
</body>
</html>
Was kann ich oder müssen dies tun, um es zu binden?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Modell-Attribut ist das, was Sie hier vermisst.
Die Idee ist, dass die @ModelAttribute Methode wird aufgerufen, auf die GET-und die POST, auf die GET-Anforderung, es wird nur ausgesetzt werden, um die zu sehen, wo sich auf den BEITRAG, es wird verwendet, um binden der request-Parameter.
Beachten Sie, dass die
BindingResult
übergeben wird, um die POST-Methode, so dass Sie etwas tun können, mit den Befehl.1) der Inhalt Der modelMap sind implizit in der JSP. Sie brauchen nicht, um anzugeben, 'Modell', wenn Sie Zugang zu Ihnen haben.
2) JSP-EL-Zugriffe Felder über bean-property-Accessoren, nicht aufrufen von Methoden. Sie don T geben Sie 'bekommen' zu nennen, eine tatsächliche Methode. Verwenden Sie die bean-Eigenschaft Namen. z.B. ${person.firstName}, um das Ergebnis der person.getFirstName();
`
<form:form action="about.html" commandName="person" > <form:input path="FirstName"/> <form:input path="LastName"/> <input type="submit" value="Submit" /> </form:form>
Hause.jsp kann ich binden von View zu Controller. Für das vollständige Bild. DankeMüssen Sie ändern die Person-Objekt, das die Attribute sollte nicht ein "_" davor. Ändern "_firsName" auf "Vorname". Die getter -, setter sind in Ordnung. Feder binden geht von Attribut-Namen zu den entsprechenden getter und setter.
Verändern auch die Art des Zugriffs auf die in der Ansicht. Wie ${person.firstName}. Sie brauchen nicht das "Modell" vor der "person.firstName" und auch Sie nicht brauchen, um mentione getFirstName, Feder automatisch übernimmt das für Sie.
Bitte überprüfen Sie Ihre Person der Klasse variable, getter-und setter-Methoden zu benennen. Die get-Methode sollte beginnen mit " get " und erste Hauptstadt der Buchstaben des Variablen-Namen und der gleichen bei anderen Buchstaben zum Beispiel :
getFirstName()
- und setter-Methode sollte auch wie getter-Methode. Wenn Namenskonvention Ihre getter-und setter-Methoden sind anders, die Bindung nicht richtig funktioniert. Hier ist die update-version von Ihrer Person-Klasse.