Java Spring MVC Flash属性

Java Spring MVC Flash属性,java,spring,spring-mvc,Java,Spring,Spring Mvc,如何增强下面的控制器以利用Spring MVC的Flash属性?用例是一个复制函数 发布/请求/获取实现: 客户端单击UI中的“复制”按钮 服务器设置响应“位置”标题 客户端重定向到“路径/到/页面?复制” 服务器提供ModelAndView 客户端(jQuery成功函数)设置window.location FooController重定向方法: @RequestMapping(value = "{fooId}", method = POST, params = { "copy" }) @Tra

如何增强下面的控制器以利用Spring MVC的Flash属性?用例是一个复制函数

发布/请求/获取实现:

  • 客户端单击UI中的“复制”按钮
  • 服务器设置响应“位置”标题
  • 客户端重定向到“路径/到/页面?复制”
  • 服务器提供ModelAndView
  • 客户端(jQuery成功函数)设置window.location
  • FooController重定向方法:

    @RequestMapping(value = "{fooId}", method = POST, params = { "copy" })
    @Transactional
    @ResponseStatus(CREATED)
    public void getCopyfoo(@PathVariable String fooId, 
    HttpServletResponse response, RedirectAttributes redirectAttrs) {
        response.setHeader("Location", uriPath);
        //no worky?!:
        redirectAttrs.addFlashAttribute("barKey", "barValue");
    }
    
    FooController获取方法:

    @RequestMapping(value = "{fooId}", method = GET)
    @Transactional(readOnly = true)
    public ModelAndView findFooById(@PathVariable String fooId, 
    HttpServletRequest request){ 
        Map<String, ?> map = RequestContextUtils.getInputFlashMap(request);
        // map is empty...
        return modelAndViewFromHelperMethod();
    }
    
    @RequestMapping(value=“{fooId}”,method=GET)
    @事务(只读=真)
    公共模型和视图findFooById(@PathVariable String fooId,
    HttpServletRequest请求){
    Map Map=RequestContextUtils.getInputFlashMap(请求);
    //地图是空的。。。
    从HelperMethod()返回模型和视图;
    }
    
    我很惊讶
    重定向属性
    仅适用于
    重定向视图
    , 因此,您的控制器应返回,例如:

    1. String: "redirect:/[uriPath]"
    2. new RedirectView([uriPath])
    
    如果您确实需要使用JS处理服务器响应,那么处理HTTP状态302可能会有所帮助