如何在弹出窗口中的jsp页面中显示ModelAndView模型值

时间:2017-03-30 06:56:44

标签: spring spring-mvc

我有一个jsp submit-cot.jsp,我点击下面的控制器,表单已成功提交,我再次被重定向到submit-cot.jsp页面。

@RequestMapping(value = "/submitform", method = RequestMethod.POST)
    public ModelAndView submitform(
            ModelAndView model,
            @ModelAttribute("cot") Cot cot,
            @ModelAttribute("platformUrl") PlatformUrlView platformUrl,
            final HttpServletRequest request)
    {
        cotService.save(cot,platformUrl);
        model.setViewName("redirect:/submit-cot");
        model.addObject("msg", resource.getMsg("A45"));
        return model;
    }

问题在于消息' msg'来自网址,如     http://localhost:8080/submit-cot?msg=Cot+is+submitted+successfully。 我需要显示消息' msg'在弹出窗口中。

任何人都可以建议如何在弹出窗口中显示消息。 提前谢谢。

2 个答案:

答案 0 :(得分:0)

在模型对象本身中传递所需的参数。 model.addAttribute(key,value)。这将在JSP中提供。使用$ {keyname}在客户端检索属性并显示它。我希望这能解决你的问题。

答案 1 :(得分:0)

由于您正在从Controller执行重定向,因此默认重定向机制将添加要附加到url的属性值,因为这是能够在请求 - 响应中维护值的唯一方法 - 不维护服务器端会话的请求周期。

您的问题的解决方案是使用Spring的闪存属性功能,该功能专门用于解决此问题。

您可以按以下方式更改控制器代码

@RequestMapping(value = "/submitform", method = RequestMethod.POST)
public RedirectView submitform(
        ModelAndView model,
        @ModelAttribute("cot") Cot cot,
        @ModelAttribute("platformUrl") PlatformUrlView platformUrl,
        final HttpServletRequest request
        final RedirectAttributes redirAttr)
{
    cotService.save(cot,platformUrl);

    RedirectView redirectView = new RedirectView();
    redirectView.setContextRelative(true);
    redirectView.setUrl("/submit-cot");
    redirAttr.addAttribute("msg", resource.getMsg("A45"));

    return redirectView;
}

在您的控制器代码中处理" / submit-cot" url,您可以使用RequestContextUtils检索该值,并将其设置在ModelAndView中以进行进一步处理。以下示例

@RequestMapping(value = "/submit-cot", method = RequestMethod.GET)
public ModelAndView submitCot(
        ModelAndView model,
        final HttpServletRequest request)
{
    model.setViewName("popup-view");

    Map<String, ?> flashMap = RequestContextUtils.getInputFlashMap(request);
    if (flashMap != null) {
        model.addAttribute("msg", msg);
    }

    return model;
}

最后,在您的视图中,您可以放置​​逻辑以有条件地显示弹出窗口。

文档链接以供进一步阅读 - https://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-flash-attributes