3

我知道这可能是个愚蠢的问题,我尝试使用谷歌搜索但没有得到完美的答案。

我正在使用以下代码

<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 类型的对象,而不是一个字符串,因为它把它视为一个字符串对象。我在 bean 中有 getClientId 方法。此外,如果我按原样放置包含的 jsp 文件的内容(没有指令和 c:set 标签),它绝对可以正常工作。有没有办法我可以使用 jsp:param 标签传递一个对象,并在接收端将它作为一个对象获取?

是否可以使用 jstl 或者我将不得不使用相同的脚本/表达式?

谢谢,阿尔马斯

4

1 回答 1

8

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>  
于 2010-12-09T11:14:34.650 回答