3

Я знаю, что это может быть глупый вопрос, и я попробовал поиск по Google, но не получил идеального ответа.Объект, переданный через jsp: param throws javax.el.PropertyNotFoundException: Свойство '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 является объектом типа ком. xyz.AggregatedBatchProgressMetrics, а не String, из исключения он рассматривает это как объект String. У меня есть метод getClientId внутри компонента. Также, если я размещаю содержимое включенного jsp-файла как есть (без директив и c: set tag), он работает абсолютно нормально. Есть ли способ, которым я могу передать объект с помощью jsp: param tag, и на получающемся конце я получаю его как объект?

Возможно ли использование jstl или i для использования сценариев/выражения для этого же?

Спасибо, Almas

+0

пожалуйста форматировать Ваш код правильно – 2010-12-09 10:03:44

+0

Пожалуйста, не XML-бежать тегов. Это делает код нечитаемым. – BalusC 2010-12-09 11:14:52

ответ

6

параметры запроса 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> 
Смежные вопросы