如何在Spring MVC中放置一个具有PathVariable的重定向URL

问题描述 投票:0回答:1

我试图找到如何从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中应如何显示?

java spring-mvc redirect
1个回答
0
投票

这应该工作

int or String p1="1";
int or String p2="1";

return "redirect:/abc/xyz/"+p1;

return "redirect:/abc/xyz/"+p1+"/"+p2;
© www.soinside.com 2019 - 2024. All rights reserved.