У меня есть два разных приложения Spring (app-one, app-two), app-one должен получить ответ, а затем перенаправить на app-two с некоторыми параметрами .Итак, у меня есть следующий REST-контроллер в app-one:
@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-контроллер в app-two:
@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
(в данном случае attribute
и flashAttribute
) эти атрибуты не обнаруживаются после выполненного перенаправления (attribute
получает null
и flashAttribute
получает empty
).
Я пытался получить значения атрибутов разными способами (@RequestParam
, @ModelAttribute
, model.asMap().get()
и RequestContextUtils.getInputFlashMap(request).get()
), но ни один из них не получил правильное значение.
Что мне нужночтобы получить правильные значения атрибутов в successEndpoint
.Любые предложения о том, как этого добиться?
Заранее спасибо.