我将LinkedHashMap <String, Object>
从控制器传递给View(JSP)。
我无法遍历地图并在对象中显示值。
这里的Object是我的自定义POJO类,它包含appStatus,dbCon,mwCon,timeStamp等...
当地图为空时,不应创建任何行。创建的行数应等于映射中的条目。但是,虽然地图中有条目,但不会创建任何行。
控制器代码:
@Controller
public class HealthController {
public static Map<String, Object> statusMap1 = new LinkedHashMap<String, Object>();
@RequestMapping(value = { "/", "/home" })
public ModelAndView statusDisplay() {
. . .
. . .
return new ModelAndView("monitor", statusMap1);
}
}
monitor.jsp
<table class="table table-bordered table-hover">
<tr>
<th>Gateway</th>
<th>Application Status</th>
<th>MW Connection</th>
<th>DB Connection</th>
<th>Solace Connection</th>
<th>Last Updated Time</th>
</tr>
// check if map is empty
<c:if test="${!empty statusMap1}">
<c:forEach var="statusObj" items="${statusMap1}">
<tr>
<td>${statusObj.appName}"</td>
<td>${statusObj.appStatus }</td>
<td>${statusObj.mwCon }</td>
<td>${statusObj.dbCon }</td>
<td>${statusObj.solCon }</td>
<td>${statusObj.timeStamp }</td>
</tr>
</c:forEach>
</c:if>
</table>
也试过
<td><c:out value="${statusMap1.statusObj.appName}"/></td>
<td><c:out value="${statusObj.appStatus }" /></td>
但是没有工作
答案 0 :(得分:0)
向ModelAndView
构造函数传递POJO的视图名称和地图。
但你应该传递的是一个视图名称和一个模型(反过来又是一个地图)然后你应该把你的地图(或更好的一个列表) )你的POJO进入模型并在jsp中访问它。
代码:
@Controller
public class HealthController {
@RequestMapping(value = { "/", "/home" })
public ModelAndView statusDisplay() {
. . .
. . .
List<YourPojoType> pojos = new LinkedList<YourPojoType>();
. . .
//Add objects to the list here
Map<String, Object> model = new LinkedHashMap<String, Object>();
model.put("statusList1", pojos);
return new ModelAndView("monitor", model);
}
}
然后在jsp而不是:
<c:if test="${!empty statusMap1}">
<c:forEach var="statusObj" items="${statusMap1}">
你应该:
<c:if test="${!empty statusList1}">
<c:forEach var="statusObj" items="${statusList1}">
P上。 S上。
如果你想继续使用地图。请记住,当迭代地图时,每个循环statusObj
的类型为Entry<String, Object>
,因此要获得值,应使用${statusObj.value.mwCon}