通过jsp:param传递的对象抛出javax.el.PropertyNotFoundException:Property' foo'在类型java.lang.String上找不到

我知道这可能是一个愚蠢的问题,我尝试谷歌搜索,但没有得到完美的答案。 我正在使用以下代码
<c:forEach var="aggregatedBatchProgressMetrics" items="${batchProgressMetricsList}">  
    <jsp:include page="html/tableContentsDisplayer.jsp">  
        <jsp:param name="batchProgressMetrics" value="${aggregatedBatchProgressMetrics}" />
    </jsp:include>
</c:forEach>  
在html / tableContentsDisplayer.jsp里面,我有以下内容
<c:set var="aggregatedBatchProgressMetrics">${param.batchProgressMetrics}</c:set>    
    <tr>  
        <td class="tdcenter">${aggregatedBatchProgressMetrics["clientId"]}</td>    
        <td class="tdcenter">${aggregatedBatchProgressMetrics["instrumentStats"]["totalImntsCompleted"]}</td>  
        <td class="tdcenter">${aggregatedBatchProgressMetrics["instrumentStats"]["totalImntsRemaining"]}</td>
    </tr>  
aggregatedBatchProgressMetrics是我从c得到的:forEach是com.xyz.AggregatedBatchProgressMetrics类型的对象,而不是String,从它将其视为String对象的例外。我在bean里面有getClientId方法。此外,如果我按原样放置包含的jsp文件的内容(没有指令和c:set标签),它的工作绝对正常。有没有办法我可以使用jsp:param标签传递一个对象,并在接收端我得到它作为一个对象? 是否有可能使用jstl或我必须使用scriptlets /表达式相同? 谢谢, 阿尔马斯     
已邀请:
HTTP请求参数被视为字符串。使用
jsp:param
它基本上被
String#valueOf()
转换为字符串。而是在
<c:set>
的帮助下将其作为对象存储在请求范围内。
<c:forEach var="aggregatedBatchProgressMetrics" items="${batchProgressMetricsList}">  
    <c:set var="batchProgressMetrics" value="${aggregatedBatchProgressMetrics}" scope="request" />
    <jsp:include page="html/tableContentsDisplayer.jsp" />  
</c:forEach>
<tr>  
    <td class="tdcenter">${batchProgressMetrics["clientId"]}</td>    
    <td class="tdcenter">${batchProgressMetrics["instrumentStats"]["totalImntsCompleted"]}</td>  
    <td class="tdcenter">${batchProgressMetrics["instrumentStats"]["totalImntsRemaining"]}</td>
</tr>  
    

要回复问题请先登录注册