2014-10-07 42 views
1

我正在使用帶有tile配置的struts2。我在側邊菜單中有一些鏈接。所以,當一個新頁面被轉發時,活動元素突出顯示已被刪除。我正在使用瓷磚配置如下。如何在Struts2瓷磚中單擊時突出顯示菜單中的活動元素?

<definition name="login-success" template="/mainTemplate.jsp"> 
     <put-attribute name="header" value="/header.jsp"/>  
     <put-attribute name="title" value="Welcome Page"/> 
     <put-attribute name="menu" value="/menu.jsp"/> 
     <put-attribute name="body" value="/Appointments/01_Dummy.jsp"/> 
     <put-attribute name="footer" value="/footer.jsp"/> 
    </definition> 

    <definition name="login-error" template="/mainTemplate.jsp"> 
     <put-attribute name="title" value="Login Error"/> 
     <put-attribute name="body" value="/login-error.jsp"/> 
    </definition> 

    <definition name="appointment" extends="login-success"> 
     <put-attribute name="body" value="/Appointments/02_FirstScreen.jsp"/>  
    </definition> 

我的菜單看起來像如下:

My Menu

當我點擊鏈接1,它應該在身體往前一個jsp。同時,鏈接1必須保持突出顯示,直到我點擊另一個鏈接,例如link2或Module2。

mainTemplate.jsp:

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%> 
<%@ taglib uri="/struts-tags" prefix="s"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<!--<title><tiles:getAsString name="title" /></title>--> 
<title>ISIS Patient Monitoring Solution</title> 
<link rel="shortcut icon" type="image/x-icon" 
    href="../images/isis_logo.jpg" /> 
</head> 
<style> 
html, body { 
    margin: 0; 
    padding: 0; 
    height: 100%; 
} 

#wrapper { 
    min-height: 100%; 
    position: relative; 
} 
#header { 
    padding: 6px; 
    background: #fff; 
    height: 58px; 
} 

#sideMenu { 
    padding: 6px; 
    padding-bottom: px; /* Height of the footer element */ 
    height: 1 px; 
} 

*/
     #content { 
    padding: 6px; 
    padding-bottom: 10px; /* Height of the footer element */ 
    height: 2px; 
    position: relative; 
} 

#footer { 
    width: 100%; 
    padding: 2px; 
    height: 15px; 
    position: absolute; 
    bottom: 0; 
    left: 0; 
    background: #fff; 
} 
</style> 

<body> 
    <div id="wrapper"> 
     <div align="left" id="header"> 
      <tiles:insertAttribute name="header" /> 
     </div> 
     <div id="sideMenu"> 
      <tiles:insertAttribute name="menu" /> 
     </div> 
     <div align="center" id="content"> 
      <tiles:insertAttribute name="body" /> 
     </div> 
     <div align="center" id="footer"> 
      <tiles:insertAttribute name="footer" /> 
     </div> 
    </div> 

</body> 
</html> 

我的菜單JSP如下所示:在我使用的鏈接裏標籤和錨標籤。

引入了menu.jsp:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<%@ taglib prefix="s" uri="/struts-tags"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<link type="text/css" rel="stylesheet" 
    href="${pageContext.request.contextPath}/css/styles.css" /> 
<title>ISIS Patient Monitoring System</title> 
<link rel="shortcut icon" type="image/x-icon" 
    href="./images/isis_logo.jpg" /> 
<script src="http://code.jquery.com/jquery-latest.min.js" 
    type="text/javascript"></script> 
<script type="text/javascript" src="Javascripts/script.js"> 
</script> 
</head> 
<body> 

    <div id='cssmenu'> 
     <ul class="ui-state-focus"> 
      <li class='has-sub last'><a href='#'><span>Module-1</span></a> 
       <ul id="tab2"> 
        <li><a href='appointment'><span>Link 1</span></a></li> 
        <li><a href='#'><span>Link 2</span></a></li> 

       </ul></li> 
      <li class='has-sub last'><a href='#'><span>Module-2</span></a> 
       <ul id="tab3"> 
        <li><a href='#'><span>Company</span></a></li> 
        <li class='last'><a href='#'><span>Contact</span></a></li> 
       </ul></li> 
      <li class='last'><a href='#'><span>Contact</span></a></li> 
     </ul> 
    </div> 
</body> 
</html> 

我已經使用li:active, li:visited and li:focus。沒有用。加載新頁面時突出顯示消失。任何幫助將得到適當的讚賞。

+0

突出顯示的工作方式與單選按鈕組相同,當按下突出顯示時突出顯示,但其他人未識別。在某些情況下,您只需檢查哪個按鈕處於活動狀態並更新css。 – 2014-10-07 12:02:06

+0

所以,你想讓我把所有li元素改爲單選按鈕組吧? – Vishnu 2014-10-07 12:05:26

+0

如果您正在重新加載頁面,則焦點將丟失。你必須自己處理恢復先前的選擇以突出顯示它。有幾種方法可以做到這一點,我已經在[這個答案]中列出了一些方法(http://stackoverflow.com/a/14067239/1654265) – 2014-10-07 12:08:39

回答

1

我會建議你一個機制,以突出菜單中的選擇。

第1步:在CSS中有一類突出顯示。

在CSS

// this is the only css which make selected menu appears different than other menu items 
selected or highlighted 
{ 
color: red; 
background: yellow; 
} 

這是你突出的類。

第2步:以這樣的方式body標籤的ID和ullia標籤的是來自於組合添加此類內容。

CSS

body#link1 a#link1, 
body#link2 a#link2, 
body#link3 a#link3, 
body#link4 a#link4{ 
     color: red; 
     background: yellow; 
} 

注:此類應在CSS的最後一節課,所以沒有其他的CSS重寫此類

步驟3:在瓷磚通過一項新參數,這將是不同的頁面的ID。

tiles.xml

<definition name="appointment" extends="login-success"> 
    <put-attribute name="body" value="/Appointments/02_FirstScreen.jsp"/>  
    <put-attribute name="menuselection" value="link1"/>  
</definition> 

步驟4:在菜單。使用同一ID與菜單的lia標籤什麼是合適的:JSP使用瓷磚參數

看這下面的代碼,我在body標籤,並在a標籤

<body id="<tiles:insertAttribute name="menuselection" ignore="true" />"> 

<div id='cssmenu'> 
    <ul class="ui-state-focus"> 
     <li class='has-sub last'><a href='#'><span>Module-1</span></a> 
      <ul id="tab2"> 
       <li><a id="link1" href='appointment'><span>Link 1</span></a></li> 
       <li><a id="link2" href='#'><span>Link 2</span></a></li> 

      </ul></li> 
     <li class='has-sub last'><a href='#'><span>Module-2</span></a> 
      <ul id="tab3"> 
       <li><a id="link3" href='#'><span>Company</span></a></li> 
       <li id="link4" class='last'><a href='#'><span>Contact</span></a></li> 
      </ul></li> 
     <li class='last'><a href='#'><span>Contact</span></a></li> 
    </ul> 
</div> 
</body> 

步驟5中添加ID根據你的CSS。

第4步我已經添加了ID來a標籤,你也應該與span標籤嘗試,如果它不工作,你得到的亮點。

<a id="link1" href='appointment'><span>Link 1</span></a> 

對於不同的頁面中tiles.xml使用不同menuselection

<definition name="link2" extends="login-success"> 
    <put-attribute name="body" value="/Appointments/somepage.jsp"/>  
    <put-attribute name="menuselection" value="link2"/>  
</definition> 

這將突出顯示link2。

現在,另一種情況:如果你不重裝你的頁面,那麼你需要做一個jquery功能,改變身體標籤的ID。

在你的JS文件

function enablelink2highlight(){ 
    $("body").attr("id","link2"); 
} 

呼叫您的鏈接,簡單的單擊事件這個功能。

<a id="link2" href='#' onClick="enablelink2highlight();"><span>Link 2</span></a></li> 

注:確保你沒有多body標籤,但如果你有多個body標籤可以以身體標籤給類和jquery選擇過濾。

我希望這個機制可以幫助你。請與我分享你的結果。所以我可以幫助你更多。

+0

嗨,感謝您的回覆。通過將子鏈接ID和主鏈接ID與jsp一起傳遞,我解決了這個問題。 – Vishnu 2014-12-24 10:07:17