Spring MVC::SimpleFormController::initialization

Don_Pazo

Erfahrenes Mitglied
Hallo
ich habe eine Java Programm. Als Framework benutze ich Spring MVC.

Ich habe folgende classen:

Code:
public class Person{

   private int id;
   private String nachname;
   private String vorname;
   private Address address;

   // GETer und SETer Methoden
  ...
}

public class Address{

   private String strasse;
   private String stadt;
   private int nr;

   // GETer und SETer Methoden
  ...
}


Wenn ich es einfach mit Spring MVC auf eine *.jsp datei dasganze zuweisen möchte, geht es mit :
Code:
public ModelAndView handleRequest(...)

Ich habe Aber einen SimpleFormController, und meine Frage wäre wie kann ich die Form-Seite initializieren (also änlich wie mit handleRequest)?

Meine SimpleFormController-Klasse:
Code:
public class FormController extends SimpleFormController{

    protected final Log logger = LogFactory.getLog(getClass());
    private WebClientService webClientService;

	public FormController(){
		setCommandClass(Person.class);
		setCommandName("person");
	}
	
	public ModelAndView onSubmit(Object command) throws ServletException {
		// ...
		return new ModelAndView(new RedirectView(getSuccessView()));
	}

    /* Hier sollte so eine wie init()- Methode Sein */

}
 
Das JavaDoc des SimpleFormController bzw. AbstractFormController erklären den Lifecyle / Workflow der FormController eigentlich ziemlich gut. Du solltest bisher verstanden haben, dass ein FormController ein Bean als Backingobject für das Formular benutzt (deute ich aus deiner Konfiguration im Konstruktor).

Nun gibt es die Methode formBackingObject(), die der Controller ruft um eine Instanz der Backingbean zu bekommen. Die Defaultimplementation gibt einfach eine leere Instanz deiner konfigurierten CommandClass zurück. Wenn du diese Bean nun mit Daten befüllen willst (Beispiel wäre ein Edit-Formular - dazu müsste man dann anhand einer ID eine Person aus der DB lesen), überschreibst du formBackingObject und füllst dort die Bean mit Daten.

Code:
@Override
protected Object formBackingObject(HttpServletRequest request) throws Exception {

  Person person = myService.getPerson((Integer) request.getParameter("id"));

  return person;
}

Es gibt eigentlich für jeden denkbaren Modifikationsfall Templatemethoden in SimpleFormController, die Defaultverhalten bereitstellen und bei Bedarf überschrieben werden können. Schau dir einfach mal die JavaDoc zu der Klasse an (http://static.springframework.org/s...ervlet/mvc/SimpleFormController.html#workflow).

Gruß Ollie
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück