【发布时间】:2014-07-03 14:51:13
【问题描述】:
如何在spring控制器的ModelAndView对象中添加的jsp页面中获取LinkedHashMap。请看以下代码:
用户DTO:
public class UserDTO{
public byte[] data;
public String user;
public Long id;
public byte[] getData() {
return data;
}
public void setData(byte[] data) {
this.data = data;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}
控制器:
@RequestMapping(value = "/showData", method = RequestMethod.GET)
public String showRequest(final HttpServletRequest request,
HttpServletResponse response, ModelMap model,
@RequestParam("ID") String Id) {
MyDTO myRequestDTO = new MyDTO();
String viewName = "myData";
final ModelAndView mav = new ModelAndView();
LinkedHashMap<Long,UserDTO> myList = myRequestsDTO.getAllRecords();
/* UserDTO userDoc = null;
Long userDocKey;
if(!myList.isEmpty()){
for (Map.Entry<Long,UserDTO> doc : myList.entrySet()) {
userDoc = doc.getValue();
userDocKey = doc.getKey();
System.out.println("User = " + userDoc.getUser() + " User Name = " + userDoc.getData());
} } */
mav.addObject("myList", myList);//want to get this myList in jsp page and get the details from that.
return viewName;
}
请建议如何获取存储在 ModelAndView 对象中的 LinkedHashMap 并从该映射中获取“userDoc.getUser()”、“userDoc.getId()”和“userDoc.getData()”,如我在上面的控制器代码中所示.我知道这可以使用 JSTL 来实现,但由于我是新手,请告诉我对我很有帮助的解决方案。
【问题讨论】:
-
将列表添加到ModelMap
](http://docs.spring.io/spring/docs/2.5.6/api/org/springframework/ui/ModelMap.html) that is passed in arguments.model.addObject("myList", myList);` or add it into [Model,它也作为方法参数传递。model.addAttribute("myList", myList); -
model.addAttribute("myList", myList);工作而 model.addObject("myList", myList);也有效,但它是一种已弃用的方法。谢谢@Braj。但只是好奇为什么它不能与 mav.addObject("myList", myList); .
-
因为
mav是一个永远不受spring 控制的局部变量。 spring 只检查作为方法参数传递的 Model 和 ModelMap。或者您可以将ModelAndView对象作为方法返回类型返回,在这种情况下它会起作用。只需在ModelAndView中设置视图名称以及列表。 -
不客气。使用 ModelAndView 尝试最后一个选项。只需调用ModelAndView#setViewName() 并添加对象并返回它。
标签: java spring jsp spring-mvc jstl