Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 如何显示类型为'的值;用户定义类';从HashMap导入jsp<;字符串,UserDefinedClass>;使用JSTL?_Spring_Jsp_Model View Controller_Jstl - Fatal编程技术网

Spring 如何显示类型为'的值;用户定义类';从HashMap导入jsp<;字符串,UserDefinedClass>;使用JSTL?

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

这是我的问题的简化版本,框架是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<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}