Hallo Ihr!
Ich arbeite mich gerade neu in die Thematik Spring (Web MVC) ein, und sitze an einer Stelle, bei der ich nicht genau weiß, wie ich dort am geschicktesten Arbeiten kann.
Ich habe die Entitäten Customer und Address. Jeder Kunde besitzt ein einzelnes Address-Objekt, welches seine Anschrift darstellen soll. Nun soll der Benutzer des Systems die Möglichkeit haben, einen neuen Kunden mittels eines Formulares einzugeben, sprich Name + Anschrift. Hier erstmal die Entitäten
Das Formular sollte nun in etwa so aussehen
Mein CustomerController sieht nun bisher so aus:
Allerdings wird bei der Validierung nur die Customer-Entität überprüft. Die Annotationen der Address-Entität dagegen nicht.
Ich weiß, dass man mehrere @ModelAttribute Parameter in der entsprechenden Methode verwenden kann, allerdings nicht, wie das entsprechende JSP-Formular aussehen würde.
Kann mir jemand sagen, wie ich sowas am besten validiere, also Felder von Formularen, die in wirklichkeit zu mehreren Entitäten gehören?
Ich weiß, dass ich die Adress-Felder auch zum Customer schieben könnte, aber darum geht es mir ja nicht unbedingt
Danköö
Ich arbeite mich gerade neu in die Thematik Spring (Web MVC) ein, und sitze an einer Stelle, bei der ich nicht genau weiß, wie ich dort am geschicktesten Arbeiten kann.
Ich habe die Entitäten Customer und Address. Jeder Kunde besitzt ein einzelnes Address-Objekt, welches seine Anschrift darstellen soll. Nun soll der Benutzer des Systems die Möglichkeit haben, einen neuen Kunden mittels eines Formulares einzugeben, sprich Name + Anschrift. Hier erstmal die Entitäten
Java:
public class Customer implements Serializable {
private static final long serialVersionUID = -2931800946076947354L;
private Long id;
@NotEmpty
private String name;
private Address address;
/* Getter und Setter */
}
Java:
public class Address implements Serializable {
private static final long serialVersionUID = -922853019764803793L;
private Long id;
@NotEmpty
private String street;
@NotEmpty
private String streetNumber;
@NotEmpty
private String zip;
@NotEmpty
private String city;
/* Getter und Setter */
}
Das Formular sollte nun in etwa so aussehen
Code:
<spring:url value="/customer" var="form_url" />
<form:form method="post" modelAttribute="customer" action="${form_url}">
<table>
<tr>
<th>Name: </th>
<td><form:input path="name" /><form:errors path="name" cssClass="error" /></td>
</tr>
<tr>
<th>Strasse: </th>
<td><form:input path="address.street" /><form:errors path="address.street" cssClass="error" /></td>
</tr>
<tr>
<th>Hausnummer: </th>
<td><form:input path="address.streetNumber" /><form:errors path="address.streetNumber" cssClass="error" /></td>
</tr>
<tr>
<th>PLZ: </th>
<td><form:input path="address.zip" /><form:errors path="address.zip" cssClass="error" /></td>
</tr>
<tr>
<th>Stadt: </th>
<td><form:input path="address.city" /><form:errors path="address.city" cssClass="error" /></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="Speichern" /></td>
</tr>
</table>
</form:form>
Mein CustomerController sieht nun bisher so aus:
Java:
@Controller
public class CustomerController {
private Logger logger = org.slf4j.LoggerFactory.getLogger(IndexController.class);
@RequestMapping(value="/customer", method=RequestMethod.POST)
public String create(@ModelAttribute("customer") @Valid Customer customer, BindingResult result, ModelMap modelMap) {
if (customer == null) throw new IllegalArgumentException("Property needed");
if (result.hasErrors()) {
modelMap.addAttribute("customer", customer);
return "customer/create";
}
logger.info("Hier wird der Kunde nun in die DB geschrieben");
return "redirect:/customer/" + customer.getId();
}
@RequestMapping(value="/customer/form", method=RequestMethod.GET)
public String createForm(ModelMap modelMap) {
modelMap.addAttribute("customer", new Customer());
return "customer/create";
}
}
Allerdings wird bei der Validierung nur die Customer-Entität überprüft. Die Annotationen der Address-Entität dagegen nicht.
Ich weiß, dass man mehrere @ModelAttribute Parameter in der entsprechenden Methode verwenden kann, allerdings nicht, wie das entsprechende JSP-Formular aussehen würde.
Kann mir jemand sagen, wie ich sowas am besten validiere, also Felder von Formularen, die in wirklichkeit zu mehreren Entitäten gehören?
Ich weiß, dass ich die Adress-Felder auch zum Customer schieben könnte, aber darum geht es mir ja nicht unbedingt
Danköö