2013-07-29 49 views
0

我的代碼有什麼問題嗎?我的if else聲明不起作用。if else聲明不工作jsp

<% 
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> 
+4

*我的代碼有什麼問題嗎?*是,使用scriptlets:[如何避免Java代碼在JSP文件?](http://stackoverflow.com/q/3177733/1065197)。 –

回答

4

您需要使用.equals方法來測試字符串是否相等。 試試這個:

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

它的工作!先生非常感謝您! :D – t0odlez

+1

不客氣。但是,正如上面評論中提到的@Luiggi,你應該避免使用scriplets。 –

+0

檢查我的答案,爲這個問題提供一種更好的解決方案 –

0

這是更好的方法(不小腳本):

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

要修復您的代碼:使用equals比較String S(如圖Harshal Pandya's answer)。

要真正修復你的代碼:停止使用腳本,如下所示:How to avoid Java code in JSP files?。用ELJSTL和JavaScript重寫所有這些。我寫了這一個基本的例子忽略所有的辛苦維護的小腳本和HTML代碼:

  • ${param.page}取代request.getParameter("page");
  • window.onload = function() { ... };定義一個JavaScript:

    <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> 
    

    提供的代碼的說明函數在加載頁面後執行(更多信息: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存在(這對於那些沒有<li>內的<a>元件)和驗證針對page請求參數在內的文本。