diff --git a/src/main/java/org/springframework/samples/petclinic/web/OwnerController.java b/src/main/java/org/springframework/samples/petclinic/web/OwnerController.java index a7f760a97b423403c1742a3db223a3774c4576b3..a7fcfe4e43bee4c9ccd2201b0e41f2db4193bfcb 100644 --- a/src/main/java/org/springframework/samples/petclinic/web/OwnerController.java +++ b/src/main/java/org/springframework/samples/petclinic/web/OwnerController.java @@ -22,7 +22,7 @@ import org.springframework.web.servlet.ModelAndView; /** * JavaBean form controller that is used to handle <code>Owner</code>s . - * + * * @author Juergen Hoeller * @author Ken Krebs * @author Arjen Poutsma @@ -63,7 +63,7 @@ public class OwnerController { return "redirect:/owners/" + owner.getId(); } } - + @RequestMapping(value = "/owners/find", method = RequestMethod.GET) public String initFindForm(Model model) { model.addAttribute("owner", new Owner()); @@ -96,7 +96,7 @@ public class OwnerController { return "redirect:/owners/" + owner.getId(); } } - + @RequestMapping(value="/owners/{ownerId}/edit", method = RequestMethod.GET) public String initUpdateOwnerForm(@PathVariable("ownerId") int ownerId, Model model) { Owner owner = this.ownerRepository.findById(ownerId); @@ -112,10 +112,10 @@ public class OwnerController { else { this.ownerRepository.save(owner); status.setComplete(); - return "redirect:/owners/" + owner.getId(); + return "redirect:/owners/{ownerId}"; } } - + /** * Custom handler for displaying an owner. * diff --git a/src/main/java/org/springframework/samples/petclinic/web/PetController.java b/src/main/java/org/springframework/samples/petclinic/web/PetController.java index ad94356ac57ab75c4fe46ee932d0318ba2c0843e..810985a1511c8c8ae98607ab69eba684b276d79f 100644 --- a/src/main/java/org/springframework/samples/petclinic/web/PetController.java +++ b/src/main/java/org/springframework/samples/petclinic/web/PetController.java @@ -24,7 +24,7 @@ import org.springframework.web.bind.support.SessionStatus; /** * JavaBean form controller that is used to add a new <code>Pet</code> to the * system. - * + * * @author Juergen Hoeller * @author Ken Krebs * @author Arjen Poutsma @@ -35,7 +35,7 @@ public class PetController { private final ClinicService clinicService; - + @Autowired public PetController(ClinicService clinicService) { this.clinicService = clinicService; @@ -69,10 +69,10 @@ public class PetController { else { this.clinicService.savePet(pet); status.setComplete(); - return "redirect:/owners/" + pet.getOwner().getId(); + return "redirect:/owners/{ownerId}"; } } - + @RequestMapping(value="/owners/*/pets/{petId}/edit", method = RequestMethod.GET) public String initUpdateForm(@PathVariable("petId") int petId, Model model) { Pet pet = this.clinicService.findPetById(petId); @@ -80,7 +80,7 @@ public class PetController { return "pets/createOrUpdatePetForm"; } - @RequestMapping(value="/owners/*/pets/{petId}/edit", method = { RequestMethod.PUT, RequestMethod.POST }) + @RequestMapping(value="/owners/{ownerId}/pets/{petId}/edit", method = { RequestMethod.PUT, RequestMethod.POST }) public String processUpdateForm(@ModelAttribute("pet") Pet pet, BindingResult result, SessionStatus status) { // we're not using @Valid annotation here because it is easier to define such validation rule in Java new PetValidator().validate(pet, result); @@ -90,7 +90,7 @@ public class PetController { else { this.clinicService.savePet(pet); status.setComplete(); - return "redirect:/owners/" + pet.getOwner().getId(); + return "redirect:/owners/{ownerId}"; } } diff --git a/src/main/java/org/springframework/samples/petclinic/web/VisitController.java b/src/main/java/org/springframework/samples/petclinic/web/VisitController.java index 85a4d54295db84a4ea57190f82f541bc9091baec..1c61dffc16faef533aba4af00598842c07fb6c3a 100644 --- a/src/main/java/org/springframework/samples/petclinic/web/VisitController.java +++ b/src/main/java/org/springframework/samples/petclinic/web/VisitController.java @@ -22,7 +22,7 @@ import org.springframework.web.servlet.ModelAndView; /** * JavaBean form controller that is used to add a new <code>Visit</code> to the * system. - * + * * @author Juergen Hoeller * @author Ken Krebs * @author Arjen Poutsma @@ -53,7 +53,7 @@ public class VisitController { return "pets/createOrUpdateVisitForm"; } - @RequestMapping(value="/owners/*/pets/{petId}/visits/new", method = RequestMethod.POST) + @RequestMapping(value="/owners/{ownerId}/pets/{petId}/visits/new", method = RequestMethod.POST) public String processNewVisitForm(@Valid Visit visit, BindingResult result, SessionStatus status) { if (result.hasErrors()) { return "pets/createOrUpdateVisitForm"; @@ -61,10 +61,10 @@ public class VisitController { else { this.clinicService.saveVisit(visit); status.setComplete(); - return "redirect:/owners/" + visit.getPet().getOwner().getId(); + return "redirect:/owners/{ownerId}"; } } - + /** * Custom handler for displaying an list of visits. * diff --git a/src/main/webapp/WEB-INF/mvc-core-config.xml b/src/main/webapp/WEB-INF/mvc-core-config.xml index 6ce11a4a6efbff6b42c47488ef8101aa68079b6c..2678f7ceaf268869a916f34fe16053053cc78ee6 100644 --- a/src/main/webapp/WEB-INF/mvc-core-config.xml +++ b/src/main/webapp/WEB-INF/mvc-core-config.xml @@ -17,7 +17,7 @@ --> <context:component-scan base-package="org.springframework.samples.petclinic.web, org.springframework.samples.petclinic.service"/> - <mvc:annotation-driven conversion-service="conversionService"/> + <mvc:annotation-driven conversion-service="conversionService" /> <!-- all resources inside folder src/main/webapp/resources are mapped so they can be refered to inside JSP files (see header.jsp for more details) --> diff --git a/src/main/webapp/WEB-INF/mvc-view-config.xml b/src/main/webapp/WEB-INF/mvc-view-config.xml index 94ca95fa0f630521a68e6b756343fdf890b14803..0487164ccff3e53e443ef91dd1bccf64d74bd713 100644 --- a/src/main/webapp/WEB-INF/mvc-view-config.xml +++ b/src/main/webapp/WEB-INF/mvc-view-config.xml @@ -19,23 +19,19 @@ - property of the vets view bean, setting it to 'application/vnd.springsource.samples.petclinic+xml'. --> <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"> - <property name="contentNegotiationManager"> - <bean class="org.springframework.web.accept.ContentNegotiationManager"> - <constructor-arg> - <bean class="org.springframework.web.accept.PathExtensionContentNegotiationStrategy"> - <constructor-arg> - <map> - <entry key="xml" value="application/vnd.springsource.samples.petclinic+xml"/> - <entry key="atom" value="#{visitList.contentType}"/> - </map> - </constructor-arg> - </bean> - </constructor-arg> - </bean> - </property> + <property name="contentNegotiationManager" ref="cnManager"/> <property name="order" value="0"/> </bean> + <bean id="cnManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean"> + <property name="mediaTypes"> + <value> + xml=application/vnd.springsource.samples.petclinic+xml + atom=#{visitList.contentType} + </value> + </property> + </bean> + <!-- - The BeanNameViewResolver is used to pick up the visits view name (below). - It has the order property set to 2, which means that this will