Java 在Get和Post控制器之间传递属性,但不在URL中传递
我有一个POST控制器,它采用一种形式,并根据给定的输入执行一些计算。 即 如果表单提交了两个变量a和b,POST方法将接受这两个变量并创建整数c=a+b。 现在我想把这个整数C传递给我的GET控制器,因为当我从我的GET控制器返回模型和视图时,我需要将C作为一个对象传递,以便能够在我的Thymeleaf模板中使用它 实现这一目标的最佳方式是什么? 我从POST方法中使用returnnewmodelandview(“redirect:/path”),然后GET方法映射该链接。 我不想在URL中传递变量。 我尝试使用像addFlashAttributes这样的重定向属性,但在刷新后,我丢失了该值,我需要保持该值显示在页面中 示例代码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中传
@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可能可以尝试会话对象