Alm*_*mas 3 jsp jspinclude parameter-passing propertynotfoundexception
我知道这可能是一个愚蠢的问题,我尝试谷歌搜索,但没有得到完美的答案.
我正在使用以下代码
<c:forEach var="aggregatedBatchProgressMetrics" items="${batchProgressMetricsList}">
<jsp:include page="html/tableContentsDisplayer.jsp">
<jsp:param name="batchProgressMetrics" value="${aggregatedBatchProgressMetrics}" />
</jsp:include>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)
在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>
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
<tr>
<td class="tdcenter">${batchProgressMetrics["clientId"]}</td>
<td class="tdcenter">${batchProgressMetrics["instrumentStats"]["totalImntsCompleted"]}</td>
<td class="tdcenter">${batchProgressMetrics["instrumentStats"]["totalImntsRemaining"]}</td>
</tr>
Run Code Online (Sandbox Code Playgroud)