`
yiyu
  • 浏览: 187180 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用Smooth Navigational Menu实现动态菜单

阅读更多
在企业应用中一般需要根据登录用户的身份动态生成系统菜单,本文演示了使用Smooth Navigational Menu插件,通过ajax技术,从后台获取数据动态生成菜单的方法。其中前台使用的Smooth Navigational Menu是一jquery插件,后台使用Struts的Action与其交互。

Smooth Navigational Menu的主页为:http://www.dynamicdrive.com/dynamicindex1/ddsmoothmenu.htm

将jquery和Smooth Navigational Menu引入项目很简单,只需将有关文件拷贝到 WebContent 目录下即可,本例中以如下结构引入:

/WebContent
    /jquery                    jquery-1.3.1.js
        /smoothmenu      ddsmoothmenu.css, ddsmoothmenu.js, down.gif, right.gif

jsp文件中引入相关的css和js文件,并定义容纳菜单的<div>,代码如下:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>jquery web app</title>
<link rel="stylesheet" type="text/css" href="jquery/smoothmenu/ddsmoothmenu.css" />
<script type="text/javascript" src="jquery/jquery-1.3.1.js"></script>
<script type="text/javascript" src="jquery/smoothmenu/ddsmoothmenu.js"></script>
</head>

<body>
<div id="smoothcontainer">
</div>
</body>

</html>


为了以ajax方式获取数据,需要修改ddsmoothmenu.js。修改的位置为文件末尾处的ddsmoothmenu.init( )处,代码如下:
ddsmoothmenu.init({
	mainmenuid: "smoothmenu-ajax", //菜单的id
	customtheme: ["#1c5a80", "#18374a"], //颜色定义
	contentsource: ["smoothcontainer", "GetMenuAction.action"] //容纳菜单的<div>的id,获取菜单数据的url
})


其中mainmenuid是菜单数据中菜单<div>的id,这在后面的Action处可以看到,contentsource的第一项是jsp中容纳菜单的<div>的id,第二项是通过ajax获取菜单数据的url

另外,为了正确显示菜单中的箭头,需要修改ddsmoothmenu.js中down.gif和right.gif的路径。

示例的Action代码如下,其中的菜单数据可以想象为例如从数据库读取的。
package jqweb.actions;

import java.io.ByteArrayInputStream;
import java.io.InputStream;

import com.opensymphony.xwork2.ActionSupport;

public class MenuAction extends ActionSupport {
	private static final long serialVersionUID = -7891855010840306865L;
	
	private InputStream inputStream;

	public void setInputStream(InputStream inputStream) {
		this.inputStream = inputStream;
	}

	public InputStream getInputStream() {
		return inputStream;
	}
	
	public String execute() throws Exception {
		StringBuilder sb = new StringBuilder();
		sb.append("<div id='smoothmenu-ajax' class='ddsmoothmenu'>");
		sb.append("<ul>");
		sb.append("<li><a href='#'>菜单1</a>");
		sb.append("  <ul>");
		sb.append("  <li><a href='http://www.google.con'>谷歌中国</a></li>");
		sb.append("  <li><a href='http://www.baidu.com'>百度</a></li>");
		sb.append("  </ul>");
		sb.append("</li>");
		sb.append("<li><a href='#'>菜单2</a>");
		sb.append("  <ul>");
		sb.append("  <li><a href='http://www.google.con'>谷歌中国</a></li>");
		sb.append("  <li><a href='#'>菜单2.1</a>");
		sb.append("    <ul>");
		sb.append("      <li><a href='#'>菜单2.1.1</a></li>");
		sb.append("      <li><a href='#'>菜单2.1.2</a></li>");
		sb.append("      <li><a href='#'>菜单2.1.3</a></li>");
		sb.append("    </ul>");
		sb.append("  </li>");
		sb.append("  </ul>");
		sb.append("</li>");
		sb.append("</ul>");
		sb.append("<br style='clear: left' />");
		sb.append("</div>");
		
		inputStream = new ByteArrayInputStream(sb.toString().getBytes("utf-8"));
		
		return SUCCESS;
	}
}


struts.xml中对这个action的定义与一般的action不同,定义如下:

<action name="GetMenuAction" class="jqweb.actions.MenuAction">
	<result type="stream">
		<param name="contentType">text/html</param>
		<param name="inputName">inputStream</param>
	</result>
</action>


最后实现的菜单效果如下:

  • 大小: 8.9 KB
分享到:
评论

相关推荐

    jquery 导航栏 Smooth Navigational Menu

    在"Dynamic Drive DHTML Scripts- Smooth Navigational Menu.htm"和"Dynamic Drive DHTML Scripts- Smooth Navigational Menu_files"中,你可以找到一个完整的示例,它演示了如何实现这样的平滑导航菜单。...

    JquerySmoothNavigationalMenuDemoV1.7.1

    jQuery Smooth Navigational Menu Demo V1.7.1实现了这一功能,通过jQuery的事件监听和DOM操作,当用户将鼠标移到菜单项上时,能平滑地展示下拉子菜单,提供无缝的导航体验。 ### 竖排下拉菜单 竖排下拉菜单则是另...

    JQuery插件汇总

    timers定时器实现javascrip定时或按钮控制功能 ...SmoothNavigationalMenu导航菜单实现Javascript下拉多级菜单功能 ImageFlyout弹出图片实现javascript放大图片功能 accordion折叠菜单实现Javascript展开收缩菜单功能

    navigational-menu:HTML和CSS多层导航菜单

    这里,主菜单由`&lt;ul class="menu"&gt;`定义,而下拉子菜单则通过嵌套的`&lt;ul class="submenu"&gt;`实现。 **CSS样式** CSS(层叠样式表)用于美化HTML元素并控制布局。对于导航菜单,我们关注以下几个方面: 1. **基本...

    最新版Jquery网站导航级联菜单

    网上找了很久这种菜单,浪费了很多时间,实在没办法,只好老老实实去官网上按说明弄了一个,并更新了,jquery1.5.2, 希望给有需要的朋友可以节约一点时间,欢迎交流,qq:170262

    jquery多级导航

    例如,`jQuery-Smooth-Navigational-Menu-demo`可能就是一个演示了如何使用特定插件创建平滑导航菜单的示例项目。在该项目中,你可以找到HTML、CSS和JavaScript文件,通过查看和学习它们的实现方式,进一步理解...

    使用场景图将复杂导航指令接地_Grounding Complex Navigational Instructions Using

    本文"使用场景图将复杂导航指令接地"探讨了如何通过引入场景图(Scene Graphs)来解决这一问题,以使得强化学习(Reinforcement Learning, RL)代理能够理解和执行自然语言指令。场景图是一种图形结构,它能描述图像...

    船级社 ABS Guide for Bridge Design and Navigational Equipment

    【船级社】 ABS Guide for Bridge Design and Navigational Equipment_Systems 2021-09.pdf

    【船级社】 ABS Guide for Bridge Design and Navigational Equipment_

    【船级社】 ABS Guide for Bridge Design and Navigational Equipment_Systems 2022-01.pdf

    IHO TRANSFER STANDARD for DIGITAL HYDROGRAPHIC DATA(S-57)英文版

    5. **Appendix B - Product Specifications**:此附录给出了特定产品的规格说明,例如电子海图(Electronic Navigational Chart, ENC)的具体要求。 #### 重要通知 使用 S-57 标准时,必须考虑最新版本维护文档中...

    S57类定义与实现源码

    通过查看这些源码,我们可以了解到如何使用C++或其他编程语言来实现S57数据的解析、存储和操作。 在深入研究源码时,可能会发现以下关键部分: 1. 数据记录的解析:S57数据以记录的形式存储,每个记录包含多个字段...

    一种ENC数据在空间信息平台下的转换方法.docx

    基于设计的 ENC 数据解析与读取方法,结合 ENC 动态符号化技术,在空间信息平台下对 ENC 数据进行解析与转换,实现 ENC 数据的转换与标准化显示。 知识点 1:电子航海图(electronic navigational chart,ENC) ...

    TMS Component Pack 8.0.9.0 Full Source D7~DX10

    Office 2003 style toolbar, planning/scheduling components, advanced edits, toolbars, internet auto application update, Office 2003/2007 style tabs, pager, panel, Outlook navigational controls and ...

    电子海图提取,电子海图使用方法源码.zip

    3. 源码解读:压缩包中的“电子海图提取,电子海图使用方法源码”可能是实现上述过程的代码示例,可能包括读取ENC文件、解析数据结构、绘制海图界面等部分。通过阅读和理解源码,可以学习到如何操作电子海图数据并...

    电子海图算法的高斯实现(vc)

    电子海图(Electronic Navigational Chart,简称ENC)是现代航海技术中的重要组成部分,它以数字形式存储海洋、海岸线及航道等相关地理信息,为船舶导航提供了高效、精确的数据支持。高斯算法在电子海图中扮演着核心...

    Waypoints顶部导航栏特效代码

    Waypoints是一款广泛应用于前端开发的JavaScript库,特别适用于创建基于滚动事件的动态效果。这款库主要设计用于在页面滚动时触发特定的回调函数,从而实现诸如顶部导航栏的粘性效果,以及其他与页面滚动相关的交互...

    基于Oracle Spatial电子海图数据库的构建及实现.pdf

    在电子海图(Electronic Navigational Chart, ENC)的背景下,Oracle Spatial 提供了高效且灵活的方式来存储、管理和检索电子海图中的复杂空间信息。 电子海图是现代航海的重要工具,它们以数字形式包含了海域的...

    ECDIS电子海图操作规程教学文稿.pdf

    本教学文稿主要介绍了FMD-3100型ECDIS的基本操作和使用指南,以及与AVCS ENC(Advanced Voyage Charting System Electronic Navigational Chart)相关的海图安装、更新和许可证导入。 首先,操作ECDIS的基本步骤...

    Navigational Algorithms:导航算法-海洋导航-开源

    -天体导航:降低视线,定位线,固定...-位置天文学:航海年历,RA,GHA,12月-沿海导航:范围,白令,水平角,IALA ...-航行:大WaSP,恶臭,正畸,子午线...-天气,潮汐-软件:PC,Android ...

Global site tag (gtag.js) - Google Analytics