2014-02-27 43 views
0

我有三個cookie,其中兩個用於保存用戶的詳細信息(名稱和ID),另一個用於保存用戶的類型。我需要根據從其中一個cookie檢索到的用戶類型顯示特定的消息。如何使用JSTL讀取三個cookie的值?

我有以下工作代碼,但它有點複雜,我想知道是否有任何有效的方法來做到這一點。

<c:forEach items="${cookie}" var="IdCookie"> 
    <c:if test="${IdCookie.key == 'UserID'}"> << if UserID cookie is found 

      <c:forEach items="${cookie}" var="nameCookie"> 

       <c:if test="${nameCookie.key == 'User'}"> << if User cookie is found 

         <p>${IdCookie.value.value} &nbsp; ${nameCookie.value.value}</p> 
         <c:forEach items="${cookie}" var="typeCookie">          
           <c:if test="${typeCookie.key == 'Type'}"> << if Type cookie is found 

            <c:if test="${typeCookie.value == 'One'}"> 
             <p>,Your type is one </p> 
            </c:if> 
            <c:if test="${typeCookie.value == '0'}"> 
             <p>,Your type is NOT one </p> 
             </c:if> 

           </c:if> 

         </c:forEach> 
       </c:if> 

      </c:forEach> 
    </c:if> 

</c:forEach> 

輸出

Cookies' values >> 1 Alex 0 
    output >> 1 Alex,Your type is Not one 
    Cookies' values >> 1 Jack One 
    output >> 1 Jack,Your type is one 
+1

第一件事情是讓你的輸出的每個部分都有獨立的for循環,以使它更簡單。 – J888

回答

1

Getting cookie in JSP

可以使這個簡單了很多這樣:通過使用三元運算符

<p>${cookie['UserId'].value} ${cookie['User'].value}, 
<c:if test="${cookie['Type'].value == 'One'}"> 
    ,Your type is one 
</c:if> 
<c:if test="${cookie['Type'].value == '0'}"> 
    ,Your type is NOT one 
</c:if></p> 

使它更simpeler( ?:)被留下一個練習爲讀者提供:)。

如果您要檢查如果cookie先存在,看到這樣一句:Check if Cookie exists with JSP EL

,所以你可以這樣做:

<c:if test="${fn:contains(header.cookie, 'User=') and fn:contains(header.cookie, 'Type=') and fn:contains(header.cookie, 'UserId=')}"> 

當這變得複雜,我建議把它包在一個豆雖然。

+0

非常感謝,但需要在顯示Type cookie的值之前確保這些UserID和User Cookie存在。 – AlexCartio1

+0

userId和用戶cookie也顯示[email protected]。 – AlexCartio1

+0

@ AlexCartio1確實。響應已更新。 –