Spring 如何显示类型为'的值;用户定义类';从HashMap导入jsp<;字符串,UserDefinedClass>;使用JSTL?
这是我的问题的简化版本,框架是SpringMVC3.1,视图是JSP 简单POJO类:Spring 如何显示类型为'的值;用户定义类';从HashMap导入jsp<;字符串,UserDefinedClass>;使用JSTL?,spring,jsp,model-view-controller,jstl,Spring,Jsp,Model View Controller,Jstl,这是我的问题的简化版本,框架是SpringMVC3.1,视图是JSP 简单POJO类: class User { String userId ; String userName; String age; // getters and setters of the above. } 控制器类: @Controller @SessionAttributes(value = {"userObj", "userMap"}) class UserController { HashMap<Stri
class User {
String userId ;
String userName;
String age;
// getters and setters of the above.
}
控制器类:
@Controller
@SessionAttributes(value = {"userObj", "userMap"})
class UserController {
HashMap<String, User> userMap = new HashMap<String, User>();
User demoUser = new User();
demoUser.setUserId("1");
demoUser.setUserName("myname");
demoUser.setAge("45");
userMap.put(demoUser.getUserId, demoUser);
session.setAttribute("userObj", demoUser);
session.setAttribute("userMap", userMap);
//adding this objects to a ModelMap object named 'model'
model.addAttribute("userMap", userMap);
model.addAttribute("userObj", demoUser);
return "viewName" ; // name resolved to a jsp page.
}
@控制器
@SessionAttributes(值={“userObj”,“userMap”})
类用户控制器{
HashMap userMap=新的HashMap();
User demoUser=新用户();
demoUser.setUserId(“1”);
setUserName(“myname”);
demoUser.设置(“45”);
userMap.put(demoUser.getUserId,demoUser);
setAttribute(“userObj”,demoUser);
setAttribute(“userMap”,userMap);
//将此对象添加到名为“model”的ModelMap对象
addAttribute(“userMap”,userMap);
model.addAttribute(“userObj”,demoUser);
返回“viewName”;//解析为jsp页面的名称。
}
在JSP中:
<form:form method="POST" commandName="userMap" name="statusForm">
<table class="border1">
<tr>
<th width=5px>USER ID</th>
<th width=15px>USER <br>Name</th>
<th width=5px>USER AGE</th>
</tr>
<c:forEach var="entry" items="${userMap}" varStatus="status">
<tr>
<td> ${entry.key} </td> <!-- key alone will get displayed if I comment the 'entry.values' iteration forEach loop-->
<c:forEach var="innerLoop" items ="${entry.value}" varStatus="valuestatus">
<td>${innerLoop}</td>
</c:forEach>
</tr>
</c:forEach>
</table>
</form:form>
用户ID
用户名称
用户年龄
${entry.key}
${innerLoop}
在到达内部forEach循环时,我收到一个servlet错误,它说“不知道如何在forEach中迭代提供的项”。如果我对第二个forEach循环进行注释,则贴图仅显示关键点。
我尝试了许多组合,但似乎没有任何东西能够在HashMap中显示值。请告知。谢谢 这是Expexced行为。您不能迭代
用户
引用,因为这不是列表、集合和映射之类的集合
不需要内环。
您可以使用下面的代码
<c:forEach var="entry" items="${userMap}" varStatus="status">
<tr>
<td> ${entry.key} </td> <!-- key alone will get displayed if I comment the 'entry.values' iteration forEach loop-->
<td> ${entry.value.userId} </td>
<td> ${entry.value.userName} </td>
<td> ${entry.value.age} </td>
</tr>
</c:forEach>
${entry.key}
${entry.value.userId}
${entry.value.userName}
${entry.value.age}