mirror of
https://github.com/spring-projects/spring-petclinic.git
synced 2025-07-15 20:35:49 +00:00
Fix pet update functionality - Fixed issue where editing a pet's type or name wasn't persisting - Updated processUpdateForm to modify existing pet instead of adding new one - Added proper handling of existing pet update Fixes #1752
This commit is contained in:
parent
6148ddd967
commit
101ee08c8e
1 changed files with 17 additions and 4 deletions
|
@ -125,11 +125,11 @@ class PetController {
|
||||||
|
|
||||||
@PostMapping("/pets/{petId}/edit")
|
@PostMapping("/pets/{petId}/edit")
|
||||||
public String processUpdateForm(Owner owner, @Valid Pet pet, BindingResult result,
|
public String processUpdateForm(Owner owner, @Valid Pet pet, BindingResult result,
|
||||||
RedirectAttributes redirectAttributes) {
|
RedirectAttributes redirectAttributes) {
|
||||||
|
|
||||||
String petName = pet.getName();
|
String petName = pet.getName();
|
||||||
|
|
||||||
// checking if the pet name already exist for the owner
|
// checking if the pet name already exists for the owner
|
||||||
if (StringUtils.hasText(petName)) {
|
if (StringUtils.hasText(petName)) {
|
||||||
Pet existingPet = owner.getPet(petName, false);
|
Pet existingPet = owner.getPet(petName, false);
|
||||||
if (existingPet != null && !existingPet.getId().equals(pet.getId())) {
|
if (existingPet != null && !existingPet.getId().equals(pet.getId())) {
|
||||||
|
@ -146,8 +146,21 @@ class PetController {
|
||||||
return VIEWS_PETS_CREATE_OR_UPDATE_FORM;
|
return VIEWS_PETS_CREATE_OR_UPDATE_FORM;
|
||||||
}
|
}
|
||||||
|
|
||||||
owner.addPet(pet);
|
|
||||||
this.owners.save(owner);
|
Pet existingPet = owner.getPet(pet.getId());
|
||||||
|
if (existingPet != null) {
|
||||||
|
// Update existing pet's properties
|
||||||
|
existingPet.setName(pet.getName());
|
||||||
|
existingPet.setBirthDate(pet.getBirthDate());
|
||||||
|
existingPet.setType(pet.getType());
|
||||||
|
|
||||||
|
this.owners.save(owner);
|
||||||
|
} else {
|
||||||
|
|
||||||
|
owner.addPet(pet);
|
||||||
|
this.owners.save(owner);
|
||||||
|
}
|
||||||
|
|
||||||
redirectAttributes.addFlashAttribute("message", "Pet details has been edited");
|
redirectAttributes.addFlashAttribute("message", "Pet details has been edited");
|
||||||
return "redirect:/owners/{ownerId}";
|
return "redirect:/owners/{ownerId}";
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue