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 に答える