Я пытался найти способ перенаправить ссылку с контроллера Spring MVC, но я нашел решение, только если ссылка не имеет PathVariable.
Это мой контроллер
@RequestMapping(value="dokter/update/{idDokter}", method = RequestMethod.POST)
public String changeDokterFormSubmit(@PathVariable Long idDokter, @ModelAttribute DokterModel dokter, Model model, HttpServletRequest request) throws Exception{
System.err.println(request.getParameter("Tanggal lahir"));
DateFormat sdf = new SimpleDateFormat("yyyy-mm-dd");
Date date = sdf.parse(request.getParameter("Tanggal lahir"));
dokter.setTanggalLahir(date);
System.err.println(dokter.getTempatLahir());
dokter.setNik(dokter.getNik());
DokterModel newDokterData = dokterService.changeDokter(dokter);
model.addAttribute("dokter", newDokterData);
return "redirect:'/dokter/view/'+${newDokterData.getNik()}";
}
, где это метод, которого я хочу достичь.
@RequestMapping("/dokter/view/{nikDokter}")
private String detilDokter(
@PathVariable String nikDokter,
Model model
){
DokterModel dokter = dokterService.getDokterByNik(nikDokter).get();
Boolean gender = dokter.getJenisKelamin();
String result = "Laki-laki";
if(gender){
result = "Perempuan";
}
model.addAttribute("dokter", dokter);
model.addAttribute("gender", result);
model.addAttribute("spesialis", spesialisService);
return "detil-dokter";
}
Когда я попробовал это, я получил эту ошибку
java.lang.IllegalArgumentException: Model has no value for key 'newDokterData.getNik()'
Но сам POST на самом деле работает, так как сами данные изменились идеально. Как мне подойти к этой проблеме?
БОНУС
Для дальнейшего использования, если мой метод detilDokter такой:
@RequestMapping("/dokter")
private String detilDokter(
@RequestParam String nikDokter,
Model model
){
DokterModel dokter = dokterService.getDokterByNik(nikDokter).get();
Boolean gender = dokter.getJenisKelamin();
String result = "Laki-laki";
if(gender){
result = "Perempuan";
}
model.addAttribute("dokter", dokter);
model.addAttribute("gender", result);
model.addAttribute("spesialis", spesialisService);
return "detil-dokter";
}
Как происходит перенаправлениедолжно выглядеть в changeDokterFormSubmit?