java 使用 jstl 时获得预期的相等符号

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/4387695/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-30 06:08:54  来源:igfitidea点击:

Getting equal symbol expected while using jstl

javajspjstlel

提问by Almas

I am getting

我正进入(状态

org.apache.jasper.JasperException: /WEB-INF/AllClientBatchDetails.jsp(54,103) equal symbol expected

org.apache.jasper.JasperException: /WEB-INF/AllClientBatchDetails.jsp(54,103) 预期等号

And here is the jsp

这是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 aggregatedBatchProgressMetricsi have a method called getBatchMetricsListwhich return an arraylist of object called BatchProgressMetrics. If i run it without the nested c:forEachtag, it would just run fine, but if i include the nested one it just fails. Can somebody please help me?

我将请求属性设置为 batchProgressMetricsList 及其调用的对象的数组列表。我有 AggregatedBatchProgressMetrics。在里面aggregatedBatchProgressMetrics我有一个调用的方法getBatchMetricsList,它返回一个名为 BatchProgressMetrics 的对象数组列表。如果我在没有嵌套c:forEach标签的情况下运行它,它会运行良好,但如果我包含嵌套标签,它就会失败。有人能帮帮我吗?

Thanks in advance. Almas

提前致谢。阿尔玛斯

回答by Jim Tough

Try changing this:

尝试改变这个:

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

to this:

对此:

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

回答by BalusC

Replace

代替

<c:forEach var="batchProgressMetrics" items="${aggregatedBatchProgressMetrics["batchMetricsList"]}"> 

by

经过

<c:forEach var="batchProgressMetrics" items="${aggregatedBatchProgressMetrics['batchMetricsList']}">  

The doublequote was closing the itemsvalue 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 :) ).

双引号items过早关闭值,导致 EL 无效。在使用具有体面的 sytnax 突出显示的编辑器时,您应该很快就会发现这一点(例如 SO :) 上的此处)。