java – Spring MVC将属性设置为request / model / modelMap

前端之家收集整理的这篇文章主要介绍了java – Spring MVC将属性设置为request / model / modelMap前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用 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";
}

在我的JSP中,我也以这种方式显示用户登录

${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中使用.

原文链接:https://www.f2er.com/java/124707.html

猜你在找的Java相关文章