使用参数从Spring REST控制器重定向

时间:2018-09-11 17:31:31

标签: java spring-mvc spring-rest

我有两个不同的Spring应用程序(app-one,app-two),app-one应该收到响应,然后使用某些参数重定向到app-two 。因此,我在应用一中具有以下REST控制器:

@RestController
public class RedirectController
{
    @GetMapping(value = "/redirect")
    public ResponseEntity<Void> redirectEndpoint(HttpServletRequest request, 
        RedirectAttributes redirectAttributes)
    {
        // Do some business logic

        // Set parameters
        redirectAttributes.addAttribute("attribute", "Value 1");
        redirectAttributes.addFlashAttribute("flashAttribute", "Value 2");

        // Redirect to success URL
        String redirectURL = "http://app-two/success";
        HttpHeaders headers = new HttpHeaders();
        headers.setLocation(URI.create(redirectURL));
        return ResponseEntity.status(HttpStatus.FOUND).headers(headers).build();
    }
}

以及应用二中的以下REST控制器:

@RestController
public class SuccessController
{
    @GetMapping(value = "/success")
    public ResponseEntity<Void> successEndpoint(HttpServletRequest request, Model model,
        @RequestParam(value = "attribute", required = false) String attribute,
        @ModelAttribute(value = "flashAttribute") String flashAttribute)
    {
        // Get parameters
        System.out.println("attribute: " + attribute);
        System.out.println("flashAttribute: " + flashAttribute);

        String flashAttributeFromModelMap = (String) model.asMap().get("flashAttribute");
        System.out.println("flashAttributeFromModelMap: " + flashAttributeFromModelMap);

        Map<String, ?> flashMap = RequestContextUtils.getInputFlashMap(request);
        if (flashMap != null)
        {
            String flashAttributeFromFlashMap = (String) flashMap.get("flashAttribute");
            System.out.println("flashAttributeFromFlashMap: " + flashAttributeFromFlashMap);
        }

        // Do some business logic

        return ResponseEntity.status(HttpStatus.OK).build();
    }
}

我能够通过返回FOUND(302)成功重定向。但是,当向RedirectAttributes添加属性(在这种情况下为attributeflashAttribute)时,重定向完成后(attribute得到null和{ {1}}得到flashAttribute)。

我试图通过不同的方式(empty@RequestParam@ModelAttributemodel.asMap().get())来获取属性值,但是没有一个获得正确的值。

我需要在RequestContextUtils.getInputFlashMap(request).get()中获取正确的属性值。关于如何实现这一目标的任何建议?

谢谢。

0 个答案:

没有答案