addFlashAttribute和保存数据

时间:2017-11-25 18:53:41

标签: java spring spring-mvc spring-boot

当我使用addFlashAttribute时,如何从POST请求中保存数据?

@GetMapping("/collage")
public String paintPicture(@ModelAttribute(value="picture") String img){

    //How to  hold 'img' here?
    //When I send GET I want to see the image again (not only after the  redirect).

    return "collage";
}

@PostMapping(value="/sending")
public String redirect(@RequestParam(value="image") MultipartFile img,  RedirectAttributes redirectAttr) throws IOException {

    String imgAsBase64 = Base64.encodeBase64String(img.getBytes());
    redirectAttr.addFlashAttribute("picture",imgAsBase64);
        return "redirect:/collage"; 
}

1 个答案:

答案 0 :(得分:0)

RequestMappingHandlerAdapterFlashMap(包含flash变量)存储为请求属性。重定向后,会有一个全新的请求,因此Flash变量将丢失。似乎闪存变量在这里不起作用。

您可以改用会话:

session.setAttribute("picture", imgAsBase64);

然后

String imgAsBase64 = (String) session.getAttribute("picture");