С: установить внутри скрипта

Читаю 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>
Другие вопросы по тегам