2012-06-04 54 views
6

在檢索我需要使用Cookie:檢索的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工作?

回答

15

${cookie}指向一個Map<String, Cookie>,cookie名稱爲map key,Cookie對象爲map值。在<c:forEach>中的Map的每次迭代都會返回Map.Entry,後者又有getKey()和​​方法。你的困惑是Cookie對象又有 a 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不應該引用與列表本身相同的名稱。

+0

我想你的意思是$ {cookie}而不是$ {cookies},因爲它運行着$ {cookies}輸出空行 – Akash

+0

對,我剛拷貝你原來的代碼,我修復了答案:) – BalusC

+0

感謝您的幫助,當我們直接使用cookie.cookieName.value時,它是否在內部解析爲cookie.get(cookieName)以獲得匹配對? EL標籤的功能如何不是不尋常 – Akash