diff --git a/src/main/java/org/springframework/samples/petclinic/Visit.java b/src/main/java/org/springframework/samples/petclinic/Visit.java
index 7d7502d1a369e0f50bc84c14725efb421c3ba9e0..944d17d8c2242289fdee34fc86ba08fd5af0886c 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 35c80bafa10f289717dc81e731bf57b33f6e701b..0000000000000000000000000000000000000000
--- 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 f005cff33d181d6d27d970c8e2d750a90afeb742..0f3874338acfb3579d2418c66c4c88909e87d707 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";
 		}