我试图找到如何从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本身实际上是有效的,因为数据本身变化得很好。我应该如何解决这个问题?
Bonus
如果我的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中应如何显示?
这应该工作
int or String p1="1";
int or String p2="1";
return "redirect:/abc/xyz/"+p1;
return "redirect:/abc/xyz/"+p1+"/"+p2;