我有一个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'在弹出窗口中。
任何人都可以建议如何在弹出窗口中显示消息。 提前谢谢。
答案 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