0

正在阅读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 行

是否因为在 Scriplet 中使用 JSTL 而发生?如何摆脱这个问题?

4

1 回答 1

2

scriptlet 包含 Java 代码。<c:set>不是有效的 Java 代码。什么<c:set>

request.setAttribute("showPackstab", "display");

所以这是你的 scriptlet 中应该有的代码。

但更重要的是,您根本不应该使用 scriptlet。坚持使用 EL、JSTL 和其他自定义标签。如果逻辑太复杂而无法使用这些来表达,则表明它不属于视图(JSP),而是属于控制器(用 Java 编写的 servlet 或动作,在 JSP 之前调用,它准备JSP 的数据,并在数据准备好后转发给 JSP)。

这里不是这种情况,因为以上所有内容都可以重写为:

<c:if test="${cookie.DisabledPackagesTab == 'true'}">
    <b>Tab</b><img src="/tabImage.gif" align="left" />
</c:if>
于 2012-12-25T09:57:14.477 回答