在 Spring Boot 中将值从控制器发送到另一个控制器

发布于 2025-01-13 03:28:56 字数 1613 浏览 0 评论 0原文

我在不同的控制器类中有两种方法

    @RequestMapping(value="/addHari")
public String menuAddHari(HttpServletRequest request,@RequestParam(value="addchkmerah",required = false)String status, Model model) throws ParseException {
    Date hariKerja = new SimpleDateFormat("yyyy-MM-dd").parse(request.getParameter("addharikerja"));
    java.sql.Date workDay = new java.sql.Date(hariKerja.getTime());
    String keterangan = request.getParameter("addkolomket");
    Time jamMasuk = hs.getTime(request.getParameter("addjammasuk"));
    Time jamKeluar = hs.getTime(request.getParameter("addjampulang"));
    month = request.getParameter("addBulan");
    HariKerjaModel hm = new HariKerjaModel();
    hm.setKeterangan(keterangan);
    hm.setTanggal(workDay);
    hm.setMerahBukan(status);
    hm.setJamMasuk(jamMasuk);
    hm.setJamKeluar(jamKeluar);
    hs.saveDate(hm);
    model.addAttribute("month", month);
    return "redirect:/hariKerja";
}

    @RequestMapping(value="/hariKerja")
public String menuHariKerja(Model model,HttpServletRequest request) {
    List<HariKerjaModel> hk = new ArrayList<>();
    String month = request.getParameter("bulansrc");
    HariKerjaController h = new HariKerjaController();
    String x=h.getMonth();
    if(month==null) { 
        String month2 = (String) model.getAttribute("month");
    }
    hk = hs.readHariKerja(month);
    model.addAttribute("ListHariKerjaModel", hk);
    model.addAttribute("valueSelected",month);
    return "hariKerja";
}

如何将方法“menuAddHari”中的值变量“month”传递给方法“menuHariKerja”中的变量“month2”?

I have two method in different controller class

    @RequestMapping(value="/addHari")
public String menuAddHari(HttpServletRequest request,@RequestParam(value="addchkmerah",required = false)String status, Model model) throws ParseException {
    Date hariKerja = new SimpleDateFormat("yyyy-MM-dd").parse(request.getParameter("addharikerja"));
    java.sql.Date workDay = new java.sql.Date(hariKerja.getTime());
    String keterangan = request.getParameter("addkolomket");
    Time jamMasuk = hs.getTime(request.getParameter("addjammasuk"));
    Time jamKeluar = hs.getTime(request.getParameter("addjampulang"));
    month = request.getParameter("addBulan");
    HariKerjaModel hm = new HariKerjaModel();
    hm.setKeterangan(keterangan);
    hm.setTanggal(workDay);
    hm.setMerahBukan(status);
    hm.setJamMasuk(jamMasuk);
    hm.setJamKeluar(jamKeluar);
    hs.saveDate(hm);
    model.addAttribute("month", month);
    return "redirect:/hariKerja";
}

and

    @RequestMapping(value="/hariKerja")
public String menuHariKerja(Model model,HttpServletRequest request) {
    List<HariKerjaModel> hk = new ArrayList<>();
    String month = request.getParameter("bulansrc");
    HariKerjaController h = new HariKerjaController();
    String x=h.getMonth();
    if(month==null) { 
        String month2 = (String) model.getAttribute("month");
    }
    hk = hs.readHariKerja(month);
    model.addAttribute("ListHariKerjaModel", hk);
    model.addAttribute("valueSelected",month);
    return "hariKerja";
}

how to pass value variable "month" in method "menuAddHari" to variable "month2" in method "menuHariKerja" ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦行七里 2025-01-20 03:28:56

您可以在使用包含 URL 形式编码的实体或字段的路径或查询或正文重定向请求时实现您的要求。

return StringBuffer("redirect:/your/other/controller/method/")
     .append(param1).append("/").append(param2);

并且您将能够在其他控制器中处理请求:

@GetMapping(value="/your/other/controller/method/{param1}/{param2}")
public String otherMethodInOtherController(@PathVariable("paramName1") String param1, @PathVariable("paramName2") String param2) {
     // your 2sd controller code here...
     return "your-view-name";
}

当然,如果您有很多参数要发送,最好在请求正文中设置一个带有 BodyInserters 的 ResponseEntity将其发送到您的第二个控制器。

并且不要忘记不要使用 GET 方法转发敏感的用户|系统数据。

You can achieve your requirement while redirect your request with path or query or body containing entity or fields which are url-form-encoded.

return StringBuffer("redirect:/your/other/controller/method/")
     .append(param1).append("/").append(param2);

And you will be able to handle the request in your other controller with :

@GetMapping(value="/your/other/controller/method/{param1}/{param2}")
public String otherMethodInOtherController(@PathVariable("paramName1") String param1, @PathVariable("paramName2") String param2) {
     // your 2sd controller code here...
     return "your-view-name";
}

Of course, if you have many parameters to send, it will be better to set a ResponseEntity with BodyInserters inside the body of your request before to send it to your 2sd controller.

And don't forget not to use GET methods to forward sensitive user|system datas.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文