Ich habe folgende Controller:Wie kann man auf ein flash redirectAttribute spring-mvc in der Filterkette zugreifen, bevor das DispatcherServlet aufgerufen wird?
@Controller
@RequestMapping("/my-account")
public class AccountController {
@RequestMapping(value = "/foo/post",
method = RequestMethod.POST)
public String doPost(final RedirectAttributes redirectAttributes) {
redirectAttributes.addFlashAttribute("flashAttribute", "flashAttributeValue");
return "redirect:/my-account/foo/get";
}
@RequestMapping(value = "/foo/get",
method = RequestMethod.GET)
public void doGet(final HttpServletRequest request, final Model model) {
System.out.println("in request: " + RequestContextUtils.getInputFlashMap(request).get("flashAttribute"));
System.out.println("in model: " + model.asMap().get("flashAttribute"));
}
}
I würde auch das Flash-Attribut flashAttribute
während des Aufrufs eines Filters in der Filterkette, die schließlich Federn zugreifen möchte Standard DispatcherServlet
die wiederum ruft AccountController
aufruft.
public class FlashAttributeBasedFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(final HttpServletRequest request, final HttpServletResponse response, final FilterChain filterChain)
throws ServletException, IOException {
String flashAttribute = // how to access the redirectAttribute flashAttribute here?
// do something with flashAttribute ...
filterChain.doFilter(request, response);
}
Die DispatcherServlet
verwendet ein org.springframework.web.servlet.FlashMapManager
, die dieses Flash-Attribut behandelt, aber es bietet keinen Nur-Lese-Zugriff, also denke ich, ich würde etwas werden durcheinander, wenn ich es im Filter verwenden würde. Und auch die FlashMapManager
Instanz wird privat im Dispatcher-Servlet gehalten.
Hat jemand eine Idee, wie ich das Redirect-Attribut in der Filterkette für die GET
Anfrage nach der POST
zugänglich machen kann?
Ich suche eine Lösung für das gleiche Problem! Wenn ich etwas finde, schreibe ich. – Michele