Skip to content
Snippets Groups Projects
Commit 3d22e379 authored by Mic's avatar Mic
Browse files

improvements to Visit controller

- renamed
- migrated validation to bean validation
parent ece1a7a7
No related branches found
No related tags found
No related merge requests found
...@@ -7,6 +7,8 @@ import javax.persistence.Entity; ...@@ -7,6 +7,8 @@ import javax.persistence.Entity;
import javax.persistence.JoinColumn; import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne; import javax.persistence.ManyToOne;
import javax.persistence.Table; import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
/** /**
* Simple JavaBean domain object representing a visit. * Simple JavaBean domain object representing a visit.
...@@ -21,6 +23,7 @@ public class Visit extends BaseEntity { ...@@ -21,6 +23,7 @@ public class Visit extends BaseEntity {
private Date date; private Date date;
/** Holds value of property description. */ /** Holds value of property description. */
@NotNull @Size(min = 1)
@Column(name="description") @Column(name="description")
private String description; private String description;
......
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");
}
}
}
package org.springframework.samples.petclinic.web; package org.springframework.samples.petclinic.web;
import javax.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.samples.petclinic.Clinic; import org.springframework.samples.petclinic.Clinic;
import org.springframework.samples.petclinic.Pet; import org.springframework.samples.petclinic.Pet;
import org.springframework.samples.petclinic.Visit; import org.springframework.samples.petclinic.Visit;
import org.springframework.samples.petclinic.validation.VisitValidator;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model; import org.springframework.ui.Model;
import org.springframework.validation.BindingResult; import org.springframework.validation.BindingResult;
import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder; 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.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
...@@ -27,15 +27,14 @@ import org.springframework.web.bind.support.SessionStatus; ...@@ -27,15 +27,14 @@ import org.springframework.web.bind.support.SessionStatus;
* @author Arjen Poutsma * @author Arjen Poutsma
*/ */
@Controller @Controller
@RequestMapping("/owners/*/pets/{petId}/visits/new")
@SessionAttributes("visit") @SessionAttributes("visit")
public class AddVisitController { public class VisitController {
private final Clinic clinic; private final Clinic clinic;
@Autowired @Autowired
public AddVisitController(Clinic clinic) { public VisitController(Clinic clinic) {
this.clinic = clinic; this.clinic = clinic;
} }
...@@ -44,7 +43,7 @@ public class AddVisitController { ...@@ -44,7 +43,7 @@ public class AddVisitController {
dataBinder.setDisallowedFields("id"); 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) { public String setupForm(@PathVariable("petId") int petId, Model model) {
Pet pet = this.clinic.findPet(petId); Pet pet = this.clinic.findPet(petId);
Visit visit = new Visit(); Visit visit = new Visit();
...@@ -53,9 +52,8 @@ public class AddVisitController { ...@@ -53,9 +52,8 @@ public class AddVisitController {
return "pets/createOrUpdateVisitForm"; return "pets/createOrUpdateVisitForm";
} }
@RequestMapping(method = RequestMethod.POST) @RequestMapping(value="/owners/*/pets/{petId}/visits/new", method = RequestMethod.POST)
public String processSubmit(@ModelAttribute("visit") Visit visit, BindingResult result, SessionStatus status) { public String processSubmit(@Valid Visit visit, BindingResult result, SessionStatus status) {
new VisitValidator().validate(visit, result);
if (result.hasErrors()) { if (result.hasErrors()) {
return "pets/createOrUpdateVisitForm"; return "pets/createOrUpdateVisitForm";
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment