package org.springframework.samples.petclinic.web; import java.util.Collection; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.samples.petclinic.Clinic; import org.springframework.samples.petclinic.Owner; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.WebDataBinder; /** * JavaBean Form controller that is used to search for <code>Owner</code>s by * last name. * * @author Juergen Hoeller * @author Ken Krebs */ @Controller @RequestMapping("/findOwners.do") public class FindOwnersForm { private final Clinic clinic; @Autowired public FindOwnersForm(Clinic clinic) { this.clinic = clinic; } @InitBinder public void setAllowedFields(WebDataBinder dataBinder) { dataBinder.setDisallowedFields(new String[] {"id"}); } @RequestMapping(method = RequestMethod.GET) public String setupForm(Model model) { model.addAttribute("owner", new Owner()); return "findOwners"; } @RequestMapping(method = RequestMethod.POST) public String processSubmit(Owner owner, BindingResult result, Model model) { // find owners by last name Collection<Owner> results = this.clinic.findOwners(owner.getLastName()); if (results.size() < 1) { // no owners found result.rejectValue("lastName", "notFound", "not found"); return "findOwners"; } if (results.size() > 1) { // multiple owners found model.addAttribute("selections", results); return "owners"; } else { // 1 owner found owner = results.iterator().next(); return "redirect:owner.do?ownerId=" + owner.getId(); } } }