我使用
Spring MVC.我需要添加属性到请求或其他对象.它应该是将显示在屏幕上的消息.例如,如果我使用纯Servlet我可能只是:
request.setAttribute("message","User deleted");
而不是在JSP页面上
<div id="message">${message}</div>
但是当我在方法中尝试这样做时:
@RequestMapping(value = "/delete",method = RequestMethod.GET) public String deleteUser(@RequestParam("login") String login,ModelMap map,HttpServletRequest request)
模型对象 –
model.addAttribute("message","User deleted");
地图 –
map.put("message","User deleted");
ModelMap –
map.put("message","User deleted");
HttpServletRequest –
request.setAttribute("message","User deleted");
没有显示.但在我的浏览器中,我看到:http:// localhost:8081 / project / index?message =用户删除
如何解决这个小问题?
感谢您的答案
更新:
为了清楚的理解,我试图这样做:
@RequestMapping(value = "/delete",Model model) { dao.delete(login); // there is NO exeptions map.addAttribute("message","User " + login + " deleted"); return "redirect:" + "index"; }
${user.login}
解决方法
使用您的新信息,问题是重定向:.当您进行重定向时,您将发送一个具有302(或301)响应代码的HTTP响应,“位置”标题指向新的URL.浏览器会向该位置发出新的HTTP请求.因此,您的请求属性(和模型属性)不再是好的,它们不存在于新请求中.
考虑使用flash属性. RedirectAttributes类是要走的路. The javadoc has a good example.
在请求处理过程中,Model属性将被稍后添加到请求属性中.因此,您不会直接看到它
@RequestMapping(value = "/delete",HttpServletRequest request) map.put("message","User deleted"); String message = (String) request.getAttribute("message"); // will return null ... }
只是相信它最终将在请求属性中,因此可以在你的jsp中使用.