С: установить внутри скрипта
Читаю Cookies
и проверка, если конкретный Cookie
найден. Если конкретно Cookie
Я устанавливаю значение в некоторую переменную и использую его для дальнейших проверок. Ниже приведен код.
<%
String showPacksCookie = "DisabledPackagesTab";
Cookie[] cookielistTab = request.getCookies();
if(cookielistTab != null)
{
for(int i = 0; i<cookielistTab.length; i++)
{
Cookie cookie = cookielistTab[i];
if(cookie.getName().contains(showPacksCookie) && cookie.getValue().equals("true"))
{
<c:set var="showPackstab" value="display" scope="request" />
//Above is line 122
break;
}
}
}
%>
<c:if test="${showPackstab eq 'display'}">
<b>Tab</b><img src="/tabImage.gif" align="left" />
</c:if>
Этот код выдает ниже исключения,
Syntax error, insert "AssignmentOperator Expression" to complete Assignment
на линии 122
Это происходит потому, что я использую JSTL внутри Scriplet? Как уйти с этой проблемой?
1 ответ
Скриптлеты содержат код Java. <c:set>
не является допустимым кодом Java. Какие <c:set>
делает это
request.setAttribute("showPackstab", "display");
Так что это код, который вы должны иметь в вашем скриптлете.
Но что более важно, вы не должны использовать скриптлеты вообще. Придерживайтесь EL, JSTL и других пользовательских тегов. Если логика слишком сложна, чтобы ее можно было выразить, то это признак того, что она принадлежит не представлению (JSP), а контроллеру (сервлету или действию, написанному на Java, вызываемому до JSP, который подготавливает данные для JSP и пересылают в JSP, как только данные будут готовы).
Это не тот случай, так как все вышеперечисленное можно переписать так:
<c:if test="${cookie.DisabledPackagesTab == 'true'}">
<b>Tab</b><img src="/tabImage.gif" align="left" />
</c:if>