我有三个cookie,其中两个用于保存用户的详细信息(名称和ID),另一个用于保留用户的类型。我需要根据从其中一个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} ${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
答案 0 :(得分:1)
你可以通过这种方式简化:
<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>
通过使用三元运算符(?:
)使其更加简单,这对读者来说是一个练习:)。
如果您想先检查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=')}">
当这变得复杂时,我建议将它包装在一个bean中。