Getting equal symbol expected while using jstl
Asked Answered
T

2

8

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 called getBatchMetricsList which return an arraylist of object called BatchProgressMetrics. If i run it without the nested c: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

Teador answered 8/12, 2010 at 12:58 Comment(1)
Don't try and XML-escape your code samples, SO's editor can do a much better job. What you've posted is unreadable.Entremets
E
16

Try changing this:

items="${aggregatedBatchProgressMetrics["batchMetricsList"]}"

to this:

items="${aggregatedBatchProgressMetrics['batchMetricsList']}"
Expend answered 8/12, 2010 at 13:7 Comment(1)
@Teador than why is this not marked as an answer? It would be nice.Heft
B
6

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 :) ).

Barilla answered 8/12, 2010 at 13:7 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.