我很难用 jsp 迭代列表。我以速度执行了几次,但不知怎的,我无法让它与 jsp 一起工作。
这是我正在尝试开始工作的一个简单示例:
@RequestMapping("/bye")
public ModelAndView byeWorld() {
String message = "Goodbye World, Spring 4.1.2!";
List<Map<String, Object>> data = dataProvider.getVorgaengeGesamtByArkNr();
model.put("table", data);
model.put("columnNames", utils.getColumnNames(data));
return new ModelAndView("test", model);
}
utils.getColoumnNames
返回一个列表。
这是 .jsp 中的 lopp:
<c:forEach var="entry" items="${columnNames}">
<tr>
entry
</tr>
</c:forEach>
响应如下所示:
<c:forEach var="entry" items="[ARKNR_ABTEILUNG, LIEFERANT_ID, LIEFERANT_NAME, RECHNUNGS_NR, RECHNUNGS_DATUM, RECHNUNGS_EINGANG, STATUS_ID, STATUS_NAME_DE, RECHNUNGS_BETRAG_BRUTTO, RECHNUNGS_BETRAG_WAEHRUNG, SKONTO, WEITERBERECHNUNG, ARCHIV_ID, PROZESS_ID, AKTUELLER_BENUTZER, AKTUELLER_BENUTZER_ID, RECHNUNG_ID, KV_ID, ARKNR, DEPARTMENT_ID, FIBU_NAME, DBRD_ID]">
<tr>
entry
</tr>
</c:forEach>
所以列表只是替换 ${columnNames}
,根本不循环它。
@SuppressWarnings("unchecked")
public static List<String> getColumnNames(List list) {
if (list.size() > 0) {
Map map = (Map)list.get(0);
List<String> columnNames = new ArrayList<String>();
for (Object entry : map.keySet())
{
logger.debugT(entry.toString());
columnNames.add(entry.toString());
}
return columnNames;
} else {
return null;
}
}
最佳答案
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<body>
<h2>Example</h2>
<c:if test="${not empty columnNames}">
<h2>Columns</h2>
<ul>
<c:forEach var="col" items="${columnNames}">
<li>${col}</li>
</c:forEach>
</ul>
</c:if>
</body>
</html>
关于java - JSP:迭代列表并获取每个项目 (ForEach),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31425254/