2013-01-16 66 views
0

我想CSS類動態分配到我的網站的菜單欄動態分配CSS類網站菜單欄的struts2

的header.jsp文件

<div class='menuArea'> 
     <ul> 

      <li class="current"><s:a action="listUsers">Users</s:a></li> 
      <li><s:a action="listCustomers">Customers</s:a></li> 
      <li><s:a action="searchItems">Items</s:a></li> 

     </ul> 
    </div> 

類「當前」被應用到第一李元素並且是靜態的,但我希望它是動態的,具體取決於所選的頁面。

<s:include value="header.jsp"/>用於在其他JSP中包含標題。在底部

<script>var currPage = "Users";</script> 

然後,在主要頁面,preferrably,覆蓋:

+2

你有什麼辦法知道你在客戶端的哪一頁? –

+0

不可以。確定客戶端頁面會非常困難,因爲在我的項目中有超過50頁。 – scanE

+0

您正在使用jsp,因此只需使用'actionContext()'方法構建一個函數來處理動作的捕獲,然後創建一個用於比較的switch語句並根據滿足的任何切換條件來提供一個類。這不是魔術。 – Ohgodwhy

回答

1

如何將參數傳遞給<s:include>標籤。

<s:include value="header.jsp"> 
    <s:param name="currentmenu" value="'page_id'" /> 
</s:include> 

,然後在header.jsp使用${param.your_param_name}符號檢索參數,設置一些變量,你可以使用裏面<s:if>標籤設置類的元素。

<s:set name="curr"> 
    ${param.currentmenu} 
</s:set> 

<ul> 
    <li <s:if test="#curr == 'first_page_id'">class="current"</s:if> > 
    <s:a action="listUsers">Users</s:a> 
    </li> 
    <li <s:if test="#curr == 'second_page_id'">class="current"</s:if> > 
    <s:a action="listCustomers">Customers</s:a> 
    </li> 
    <li <s:if test="#curr == 'third_page_id'">class="current"</s:if> > 
    <s:a action="searchItems">Items</s:a> 
    </li> 
</ul> 
0
在header.jsp中

,設置在JavaScript中默認的變種

<script>currPage = "Customers";</script> 

然後,在你的頁腳,添加一些jQuery的:

$("ul.menuArea > li").each(function(i, v){ 
    var $obj = $(this); 
    if(currPage === $obj.find("a:first").text()){ 
     $obj.addClass("current"); 
     return false; 
    } 
    }); 

小提琴:http://jsfiddle.net/kydun/