我的代码有什么问题吗?我的if else声明无效。
<%
String pages = request.getParameter("page");
%>
<input type="hidden" id="page" value="<%=pages%>"/>
<div class="navbar navbar-fixed-bottom">
<div class="navbar-inner">
<a class="brand" href="index.jsp">PeachMangoPie</a>
<ul class="nav pull-right">
<li <%if(pages=="papoy"){out.write("class='active' ");}%>><a href="index.jsp?page=papoy">Papoy</a></li>
<li class="divider-vertical"></li>
<li <%if(pages=="chuckie"){out.write("class='active' ");}%>><a href="index.jsp?page=chuckie">Chuckie</a></li>
<li class="divider-vertical"></li>
<li <%if(pages=="dutchmill"){out.write("class='active' ");}%>><a href="index.jsp?page=dutchmill">Dutch Mill</a></li>
<li class="divider-vertical"></li>
<li <%if(pages=="icecream"){out.write("class='active' ");}%>><a href="index.jsp?page=icecream">Ice Cream</a></li>
<li class="divider-vertical"></li>
<li <%if(pages=="chicken"){out.write("class='active' ");}%>><a href="index.jsp?page=chicken">Chicken</a></li>
<li class="divider-vertical"></li>
<li <%if(pages=="straberrycake"){out.write("class='active' ");}%>><a href="index.jsp?page=strawberrycake">Strawberry-Cake</a></li>
</ul>
</div>
</div>
答案 0 :(得分:4)
您需要使用.equals方法来测试字符串相等性。 试试这个:
<li <%if(pages.equals("papoy")){out.write("class='active' ");}%>><a href="index.jsp?page=papoy">Papoy</a></li>
答案 1 :(得分:1)
要修复您的代码:使用equals
来比较String
s(如Harshal Pandya's answer所示)。
要真正修复您的代码:请按照此处的说明停止使用scriptlet:How to avoid Java code in JSP files?。使用EL,JSTL和JavaScript重写所有这些内容。我写了一个基本的例子来省略所有难以维护的scriptlet和HTML代码:
<script type="text/javascript">
window.onload = function() {
var page = '<c:out value="${param.page}" />';
var ulOptions = document.getElementById('ulOptions');
var liItems = ulOptions.getElementsByTagName("li");
for(var i = 0; i < liItems.length; i++) {
var liItem = liItems[i];
var a = liItem.getElementsByTagName("a")[0];
if (a !== undefined && a.innerText.toLowerCase() === page) {
liItem.setAttribute("class", "brand");
}
}
};
</script>
<input type="hidden" id="page" value="${param.page}"/>
<div class="navbar navbar-fixed-bottom">
<div class="navbar-inner">
<a class="brand" href="index.jsp">PeachMangoPie</a>
<%--
provided id for ul HTML component in order to ease
JavaScript onload function development
--%>
<ul id="ulOptions" class="nav pull-right">
<li><a href="index.jsp?page=papoy">Papoy</a></li>
<li class="divider-vertical"></li>
<li><a href="index.jsp?page=chuckie">Chuckie</a></li>
<li class="divider-vertical"></li>
<li><a href="index.jsp?page=dutchmill">Dutch Mill</a></li>
<li class="divider-vertical"></li>
<li><a href="index.jsp?page=icecream">Ice Cream</a></li>
<li class="divider-vertical"></li>
<li><a href="index.jsp?page=chicken">Chicken</a></li>
<li class="divider-vertical"></li>
<li><a href="index.jsp?page=strawberrycake">Strawberry-Cake</a></li>
</ul>
</div>
</div>
提供的代码说明:
${param.page}
取代request.getParameter("page");
window.onload = function() { ... };
定义加载页面后要执行的JavaScript函数(更多信息:onload Event)。<c:out>
将直接在生成的HTML上打印文本。更多信息:<c:out>
。document.getElementById
按其ID返回一个HTML元素(函数名称解释起来非常简单)。getElementsByTagName
返回一个NodeList
,其中包含所有带有相应标记名称的内部HTML元素(函数名称解释起来非常简单)。for(var i = 0; i < liItems.length; i++)
遍历<li>
内的所有ulOptions
元素。liItem.getElementsByTagName("a")[0]
将<a>
元素放在0
位置。a !== undefined && a.innerText.toLowerCase() === page
验证a
是否存在(这适用于那些<li>
内没有<a>
元素的page
,并根据{{1}}请求参数验证内部文本。 答案 2 :(得分:0)
这是更好的方法(没有scriptlet):
<li <c:out value="${param.page=='papoy'?'class=active':''}"/>">
<a href="index.jsp?page=papoy">Papoy</a>
</li>