在JSTL标记中检索cookie和数组值

Aka*_*ash 5 java jsp jstl

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

<c:forEach items="${cookie}" var="currentCookie">  
    ${currentCookie.value.name} </br>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)

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

<c:forEach items="${myList}" var="myList">  
    ${myList.name} </br>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)

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

Bal*_*usC 14

${cookie}指向Map<String, Cookie>与cookie的名称作为地图键和Cookie对象映射值.一个在每次迭代Map<c:forEach>给你一个Map.Entry回这反过来又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>
Run Code Online (Sandbox Code Playgroud)

这是Map<String, Cookie>因为它允许您在事先知道名称时轻松直接访问cookie值.以下示例假定它是cookieName:

${cookie.cookieName.value}
Run Code Online (Sandbox Code Playgroud)

您的列表示例无效.本var不应该是指相同的名称列表本身.