【问题标题】:Getting equal symbol expected while using jstl使用 jstl 时期望得到相等的符号
【发布时间】:2011-05-22 05:20:52
【问题描述】:

我来了

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 的对象数组列表。如果我在没有嵌套c:forEach 标签的情况下运行它,它会运行良好,但如果我包含嵌套的标签,它就会失败。有人可以帮帮我吗?

提前致谢。 阿尔马斯

【问题讨论】:

  • 不要尝试对代码示例进行 XML 转义,SO 的编辑器可以做得更好。您发布的内容无法阅读。

标签: java jsp jstl el


【解决方案1】:

尝试改变这个:

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

到这里:

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

【讨论】:

  • @Almas 为什么没有将其标记为答案?会很好的。
【解决方案2】:

替换

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

通过

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

双引号过早关闭items 值,导致EL 无效。当您使用具有不错的 sytnax 突出显示的编辑器时,您应该很快就发现了这一点(就像这里的 SO :))。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 2012-04-28
    • 1970-01-01
    • 2017-07-02
    • 1970-01-01
    • 1970-01-01
    • 2019-12-20
    相关资源
    最近更新 更多