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 Assignment122行目

Scriplet 内で JSTL を使用しているために発生していますか? この問題を回避するにはどうすればよいですか?

4

1 に答える 1

2

スクリプトレットには Java コードが含まれています。<c:set>は有効な Java コードではありません。<c:set>は何ですか

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

したがって、これはスクリプトレットに含める必要があるコードです。

しかし、もっと重要なことは、スクリプトレットをまったく使用しないことです。EL、JSTL、およびその他のカスタム タグに固執します。ロジックが複雑すぎてこれらを使用して表現できない場合は、それがビュー (JSP) に属しておらず、コントローラー (Java で記述されたサーブレットまたはアクションであり、JSP の前に呼び出され、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 に答える