From 3d22e37944dc3b54a366102dd49b624bc42f0d2c Mon Sep 17 00:00:00 2001 From: Mic <misvy@vmware.com> Date: Wed, 16 Jan 2013 11:07:39 +0800 Subject: [PATCH] improvements to Visit controller - renamed - migrated validation to bean validation --- .../samples/petclinic/Visit.java | 3 +++ .../petclinic/validation/VisitValidator.java | 21 ------------------- ...itController.java => VisitController.java} | 16 +++++++------- 3 files changed, 10 insertions(+), 30 deletions(-) delete mode 100644 src/main/java/org/springframework/samples/petclinic/validation/VisitValidator.java rename src/main/java/org/springframework/samples/petclinic/web/{AddVisitController.java => VisitController.java} (76%) diff --git a/src/main/java/org/springframework/samples/petclinic/Visit.java b/src/main/java/org/springframework/samples/petclinic/Visit.java index 7d7502d..944d17d 100644 --- a/src/main/java/org/springframework/samples/petclinic/Visit.java +++ b/src/main/java/org/springframework/samples/petclinic/Visit.java @@ -7,6 +7,8 @@ import javax.persistence.Entity; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; /** * Simple JavaBean domain object representing a visit. @@ -21,6 +23,7 @@ public class Visit extends BaseEntity { private Date date; /** Holds value of property description. */ + @NotNull @Size(min = 1) @Column(name="description") private String description; diff --git a/src/main/java/org/springframework/samples/petclinic/validation/VisitValidator.java b/src/main/java/org/springframework/samples/petclinic/validation/VisitValidator.java deleted file mode 100644 index 35c80ba..0000000 --- a/src/main/java/org/springframework/samples/petclinic/validation/VisitValidator.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.springframework.samples.petclinic.validation; - -import org.springframework.samples.petclinic.Visit; -import org.springframework.util.StringUtils; -import org.springframework.validation.Errors; - -/** - * <code>Validator</code> for <code>Visit</code> forms. - * - * @author Ken Krebs - * @author Juergen Hoeller - */ -public class VisitValidator { - - public void validate(Visit visit, Errors errors) { - if (!StringUtils.hasLength(visit.getDescription())) { - errors.rejectValue("description", "required", "required"); - } - } - -} diff --git a/src/main/java/org/springframework/samples/petclinic/web/AddVisitController.java b/src/main/java/org/springframework/samples/petclinic/web/VisitController.java similarity index 76% rename from src/main/java/org/springframework/samples/petclinic/web/AddVisitController.java rename to src/main/java/org/springframework/samples/petclinic/web/VisitController.java index f005cff..0f38743 100644 --- a/src/main/java/org/springframework/samples/petclinic/web/AddVisitController.java +++ b/src/main/java/org/springframework/samples/petclinic/web/VisitController.java @@ -1,17 +1,17 @@ package org.springframework.samples.petclinic.web; +import javax.validation.Valid; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.samples.petclinic.Clinic; import org.springframework.samples.petclinic.Pet; import org.springframework.samples.petclinic.Visit; -import org.springframework.samples.petclinic.validation.VisitValidator; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; -import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -27,15 +27,14 @@ import org.springframework.web.bind.support.SessionStatus; * @author Arjen Poutsma */ @Controller -@RequestMapping("/owners/*/pets/{petId}/visits/new") @SessionAttributes("visit") -public class AddVisitController { +public class VisitController { private final Clinic clinic; @Autowired - public AddVisitController(Clinic clinic) { + public VisitController(Clinic clinic) { this.clinic = clinic; } @@ -44,7 +43,7 @@ public class AddVisitController { dataBinder.setDisallowedFields("id"); } - @RequestMapping(method = RequestMethod.GET) + @RequestMapping(value="/owners/*/pets/{petId}/visits/new", method = RequestMethod.GET) public String setupForm(@PathVariable("petId") int petId, Model model) { Pet pet = this.clinic.findPet(petId); Visit visit = new Visit(); @@ -53,9 +52,8 @@ public class AddVisitController { return "pets/createOrUpdateVisitForm"; } - @RequestMapping(method = RequestMethod.POST) - public String processSubmit(@ModelAttribute("visit") Visit visit, BindingResult result, SessionStatus status) { - new VisitValidator().validate(visit, result); + @RequestMapping(value="/owners/*/pets/{petId}/visits/new", method = RequestMethod.POST) + public String processSubmit(@Valid Visit visit, BindingResult result, SessionStatus status) { if (result.hasErrors()) { return "pets/createOrUpdateVisitForm"; } -- GitLab