簡體   English   中英

如果其他語句不起作用的jsp

[英]if else statement not working jsp

我的代碼有什么問題嗎? 我的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>

您需要使用.equals方法測試字符串是否相等。 嘗試以下方法:

<li <%if(pages.equals("papoy")){out.write("class='active' ");}%>><a href="index.jsp?page=papoy">Papoy</a></li>

要修復您的代碼:使用equals比較String (如Harshal Pandya的答案所示 )。

要真正修復代碼,請按照以下說明停止使用腳本: 如何避免JSP文件中的Java代碼? 使用ELJSTL和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++)遍歷ulOptions內部的所有<li>元素。
  • liItem.getElementsByTagName("a")[0]如前所述,獲取位置為0<a>元素。
  • a !== undefined && a.innerText.toLowerCase() === page驗證a存在(對於那些內部沒有<a>元素的<li> ),並針對page請求參數驗證內部文本。

這是更好的方法(沒有scriptlet):

<li <c:out value="${param.page=='papoy'?'class=active':''}"/>">
   <a href="index.jsp?page=papoy">Papoy</a>
</li>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM