Getting equal symbol expected while using jstl
Solution 1
Try changing this:
items="${aggregatedBatchProgressMetrics["batchMetricsList"]}"
to this:
items="${aggregatedBatchProgressMetrics['batchMetricsList']}"
Solution 2
Replace
<c:forEach var="batchProgressMetrics" items="${aggregatedBatchProgressMetrics["batchMetricsList"]}">
by
<c:forEach var="batchProgressMetrics" items="${aggregatedBatchProgressMetrics['batchMetricsList']}">
The doublequote was closing the items
value too soon which resulted in invalid EL. You should have spotted this soon enough when using an editor with decent sytnax highlighting (like here on SO :) ).
Admin
Updated on July 28, 2022Comments
-
Admin almost 2 years
I am getting
org.apache.jasper.JasperException: /WEB-INF/AllClientBatchDetails.jsp(54,103) equal symbol expected
And here is the 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>
I have request attribute set to batchProgressMetricsList and its an array list of an object called. I have AggregatedBatchProgressMetrics. Inside
aggregatedBatchProgressMetrics
i have a method calledgetBatchMetricsList
which return an arraylist of object called BatchProgressMetrics. If i run it without the nestedc:forEach
tag, it would just run fine, but if i include the nested one it just fails. Can somebody please help me?Thanks in advance. Almas
-
Advaita Gosvami over 9 years@Almas than why is this not marked as an answer? It would be nice.