【问题标题】:Object passed via jsp:param throws javax.el.PropertyNotFoundException: Property 'foo' not found on type java.lang.String通过 jsp:param 传递的对象抛出 javax.el.PropertyNotFoundException: Property 'foo' not found on type java.lang.String
【发布时间】:2011-05-22 18:25:30
【问题描述】:

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

我正在使用以下代码

<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 或者我将不得不使用 scriptlet/expression 来实现相同的功能?

谢谢, 阿尔马斯

【问题讨论】:

  • 请正确格式化您的代码
  • 请不要对您的标签进行 xml 转义。它使代码不可读。

标签: jsp parameter-passing jspinclude propertynotfoundexception


【解决方案1】:

HTTP 请求参数被视为字符串。使用jsp:param,它基本上已被String#valueOf() 转换为字符串。而是在&lt;c:set&gt; 的帮助下将其作为对象存储在请求范围内。

<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>  

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-22
    • 2019-03-11
    • 1970-01-01
    • 1970-01-01
    • 2021-07-17
    • 2020-02-27
    相关资源
    最近更新 更多