正在阅读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而发生?如何摆脱这个问题?
答案 0 :(得分: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>