5

在检索 cookie 时,我需要使用:

<c:forEach items="${cookie}" var="currentCookie">  
    ${currentCookie.value.name} </br>
</c:forEach>

但是,在使用自定义数组时,为什么我们需要跳过 .value 函数?

<c:forEach items="${myList}" var="myList">  
    ${myList.name} </br>
</c:forEach>

Cookie 包含一个 .getValue 函数(),它以字符串格式返回 cookie 的内容,那么使用 currentCookie.value.name 是如何工作的呢?

4

1 回答 1

14

${cookie}指向 a的Map<String, Cookie>cookie 名称作为映射键,Cookie对象作为映射值。Map对in 的每次迭代都会<c:forEach>给你一个Map.Entryback ,它又具有getKey()getValue()方法。您的困惑是Cookie对象又具有方法getValue()

<c:forEach items="${cookie}" var="currentCookie">  
    Cookie name as map entry key: ${currentCookie.key}<br/>
    Cookie object as map entry value: ${currentCookie.value}<br/>
    Name property of Cookie object: ${currentCookie.value.name}<br/>
    Value property of Cookie object: ${currentCookie.value.value}<br/>
</c:forEach>

这是Map<String, Cookie>因为它允许您在事先知道名称的情况下轻松直接访问 cookie 值。下面的例子假设它是cookieName

${cookie.cookieName.value}

顺便说一句,您的列表示例无效。var不应引用与列表本身相同的名称。

于 2012-06-04T15:05:31.043 回答