我正在
org.apache.jasper.JasperException:/ WEB-INF/AllClientBatchDetails.jsp(54,103)等号预期
这是jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" import="java.util.*%>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<html:html xhtml="true">
<head>
<title><bean:message key="progressReporter.successpage.title"/></title>
<link rel="stylesheet" href="style.css">
<html:base/>
</head>
<body>
<c:choose>
<c:when test="${empty batchProgressMetricsList}">
<font color=<bean:message key="error.font.color" /> size=<bean:message key="error.font.size" />>
<bean:message key="error.no.active.batch" />
</font>
<br/>
</c:when>
<c:otherwise>
<h4><bean:message key="table.header" /></h4>
<table border=<bean:message key="table.border.size" />>
<tr>
<th><bean:message key="table.client.id.header" /></th>
<th><bean:message key="table.total.session.used" /></th>
<th><bean:message key="table.total.time.elapsed" /></th>
<th><bean:message key="table.imnts.completed" /></th>
<th><bean:message key="table.imnts.remaining" /></th>
<th><bean:message key="table.cores.allocated" /></th>
<th><bean:message key="table.time.remaining" /></th>
</tr>
<c:forEach var="aggregatedBatchProgressMetrics" items="${batchProgressMetricsList}">
<tr>
<td class="tdcenter">${aggregatedBatchProgressMetrics["clientId"]}</td>
<td class="tdcenter">${fn:substringBefore(aggregatedBatchProgressMetrics["sessionStats"]["sessionUsedTime"]/60000, '.')}mins${fn:substringBefore((aggregatedBatchProgressMetrics["sessionStats"]["sessionUsedTime"] % 60000)/1000, '.')}secs </td>
<td class="tdcenter">${fn:substringBefore(aggregatedBatchProgressMetrics["sessionStats"]["totalElapsedTime"]/60000, '.')}mins${fn:substringBefore((aggregatedBatchProgressMetrics["sessionStats"]["totalElapsedTime"] % 60000)/1000, '.')}secs</td>
<td class="tdcenter">${aggregatedBatchProgressMetrics["instrumentStats"]["totalImntsCompleted"]}</td>
<td class="tdcenter">${aggregatedBatchProgressMetrics["instrumentStats"]["totalImntsRemaining"]}</td>
<td class="tdcenter">${aggregatedBatchProgressMetrics["numberOfCores"]}</td>
<td class="tdcenter">${fn:substringBefore(aggregatedBatchProgressMetrics["sessionStats"]["sessionRemainingTime"]/60000, '.')}mins${fn:substringBefore((aggregatedBatchProgressMetrics["sessionStats"]["sessionRemainingTime"] % 60000)/1000, '.')}secs</td>
<br/>
<table>
<tr>
<th>session Id</th>
<th>taskId</th>
<th>task start time</th>
<th>task end time</th>
</tr>
${aggregatedBatchProgressMetrics["batchMetricsList"][0]}
${aggregatedBatchProgressMetrics["batchMetricsList"][1]}
${aggregatedBatchProgressMetrics["batchMetricsList"][2]}
<c:forEach var="batchProgressMetrics" items="${aggregatedBatchProgressMetrics["batchMetricsList"]}">
<tr>
<td class="tdcenter">${batchProgressMetrics["taskStats"]["sessionId"]}</td>
<td class="tdcenter">${batchProgressMetrics["taskStats"]["taskId"]}</td>
<td class="tdcenter">${batchProgressMetrics["taskStats"]["taskStartTime"]}</td>
<td class="tdcenter">${batchProgressMetrics["taskStats"]["taskEndTime"]}</td>
</tr>
</c:forEach>
</table>
<br/>
</tr>
</c:forEach>
</table>
</c:otherwise>
</c:choose>
<html:link page="/ProgressReporterForm.jsp">Go Back</html:link>
</body>
</html:html>
我将请求属性设置为batchProgressMetricsList,并将其命名为对象的数组列表。我有AggregatedBatchProgressMetrics。在aggregatedBatchProgressMetrics
内部,我有一个名为getBatchMetricsList
的方法,它返回一个名为BatchProgressMetrics的对象的arraylist。如果我在没有嵌套c:forEach
标签的情况下运行它,它就会运行正常,但是如果我包含嵌套的那个它就会失败。有人可以帮帮我吗?
提前致谢。 阿尔马斯
答案 0 :(得分:13)
尝试更改此内容:
items="${aggregatedBatchProgressMetrics["batchMetricsList"]}"
到此:
items="${aggregatedBatchProgressMetrics['batchMetricsList']}"
答案 1 :(得分:6)
替换
<c:forEach var="batchProgressMetrics" items="${aggregatedBatchProgressMetrics["batchMetricsList"]}">
通过
<c:forEach var="batchProgressMetrics" items="${aggregatedBatchProgressMetrics['batchMetricsList']}">
doublequote过早关闭了items
值,导致EL无效。你应该在使用具有体面sytnax突出显示功能的编辑器时很快发现这一点(比如这里的SO :)。