Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Get和Post控制器之间传递属性,但不在URL中传递_Java_Spring_Spring Boot - Fatal编程技术网

Java 在Get和Post控制器之间传递属性,但不在URL中传递

Java 在Get和Post控制器之间传递属性,但不在URL中传递,java,spring,spring-boot,Java,Spring,Spring Boot,我有一个POST控制器,它采用一种形式,并根据给定的输入执行一些计算。 即 如果表单提交了两个变量a和b,POST方法将接受这两个变量并创建整数c=a+b。 现在我想把这个整数C传递给我的GET控制器,因为当我从我的GET控制器返回模型和视图时,我需要将C作为一个对象传递,以便能够在我的Thymeleaf模板中使用它 实现这一目标的最佳方式是什么? 我从POST方法中使用returnnewmodelandview(“redirect:/path”),然后GET方法映射该链接。 我不想在URL中传

我有一个POST控制器,它采用一种形式,并根据给定的输入执行一些计算。 即 如果表单提交了两个变量a和b,POST方法将接受这两个变量并创建整数c=a+b。 现在我想把这个整数C传递给我的GET控制器,因为当我从我的GET控制器返回模型和视图时,我需要将C作为一个对象传递,以便能够在我的Thymeleaf模板中使用它

实现这一目标的最佳方式是什么? 我从POST方法中使用returnnewmodelandview(“redirect:/path”),然后GET方法映射该链接。 我不想在URL中传递变量。 我尝试使用像addFlashAttributes这样的重定向属性,但在刷新后,我丢失了该值,我需要保持该值显示在页面中

示例代码

@RequestMapping(value = "/user", method = RequestMethod.POST )
public ModelAndView sumValue(@Valid Sum sum, BindingResult bindingResult,RedirectAttributes redir) {
    long firstClient=compare.getId();
    long varA= compare.getA();
    long varB= compare.getB();

    Long c= varA+ varB.;

    ModelAndView modelAndView = new ModelAndView(
            "redirect:/user?firstId=" + firstClient);

    return modelAndView;
}


@RequestMapping(value = "/user", method = RequestMethod.GET, params = { "firstId" })
public ModelAndView comparison(@RequestParam(value = "firstId", required = true) String firstI) {
    ModelAndView modelAndView = new ModelAndView();
    modelAndView.addObject("firstClient", firstId);
    //here i want to add as an Object varC from the Post controller so I can use it in my thymeleaf
    return modelAndView;
}

感谢您的帮助

这里有几个选项:

  • 你可以把这一页转发过去
  • 您可以使用
    setAttribute
    在会话中存储该值,并使用
    getAttribute
    在get控制器中获取该值
  • 您可以通过创建一个静态的
    Map
    -classfield来混淆结果,该字段将时间和计算结果存储为键和值。如果钥匙太旧,请将其取下。在传输
    firstClient
    时传输密钥

  • 出于安全原因,我建议只使用第二种方法,而不是第三种方法。

    您在这里有几个选项:

  • 你可以把这一页转发过去
  • 您可以使用
    setAttribute
    在会话中存储该值,并使用
    getAttribute
    在get控制器中获取该值
  • 您可以通过创建一个静态的
    Map
    -classfield来混淆结果,该字段将时间和计算结果存储为键和值。如果钥匙太旧,请将其取下。在传输
    firstClient
    时传输密钥

  • 出于安全原因,我建议只使用第二种方法而不是第三种方法。

    始终使用“前进”。刷新时,您当然会丢失值。您期望什么,谁将为您缓存值?所有变量都是请求范围。下次有人需要用户详细信息时,他必须提供userId.bsingh:我应该使用Forward而不是redirect?因为我犯了个错误@mdev我知道,我的意思是,如果我使用addObject传递它,然后重定向,它会在URL中传递,我不希望这样。然而,如果我在该方法中使用重定向属性,我可以传递它并使用它,但只需一次。我更需要它。@MonG可能可以尝试session object always use forward.。刷新时,您当然会丢失该值。您期望什么,谁将为您缓存值?所有变量都是请求范围。下次有人需要用户详细信息时,他必须提供userId.bsingh:我应该使用Forward而不是redirect?因为我犯了个错误@mdev我知道,我的意思是,如果我使用addObject传递它,然后重定向,它会在URL中传递,我不希望这样。然而,如果我在该方法中使用重定向属性,我可以传递它并使用它,但只需一次。我更需要它。@MonG可能可以尝试会话对象