入门(一个简单的例子):
1.开发环境
myeclipse + jdk1.4
2.建立工程(project)
在myeclipse下建立一个web project,名字为“test-menu”.
3. 引入struts
点击菜单栏“myeclipse->add struts capabilities” 引入 struts。
4.使用struts-menu
1. 将struts-menu.jar(还需要一些jar包)拷贝到WEB-INF/lib目录下;
2. 将struts-menu.tld拷贝到WEB-INF目录下;
3.将struts-menu.war中的scripts、styles、images,templates目录拷贝到你的应用"/"目录下
4.修改struts-config.xml,在其中添加如下plugin代码:
5. 配置menu-config.xml(此文件位于WEB-INF目录下)
内容为:
它将http://locaohost:8080/test.do 的请求映射给test/test.java处理
7.test.java的内容为:
/**
*
*/
package test;
*
*/
package test;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponse;
import net.sf.navigator.menu.*;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
/**
* @author renshui
*
*/
public class test extends Action{
* @author renshui
*
*/
public class test extends Action{
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
MenuRepository repository = new MenuRepository();
MenuRepository defaultRepository =(MenuRepository)this.getServlet().getServletContext
().getAttribute(MenuRepository.MENU_REPOSITORY_KEY);
repository.setDisplayers(defaultRepository.getDisplayers());
MenuComponent mc = new MenuComponent();
mc.setName("child");
mc.setTitle("child");
MenuComponent parentMenu = new MenuComponent();
parentMenu.setName("parent");
parentMenu.setTitle("parent");
repository.addMenu(parentMenu);
mc.setParent(parentMenu);
repository.addMenu(mc);
request.setAttribute("repository", repository);
return mapping.findForward("b");
}
}
mc.setName("child");
mc.setTitle("child");
MenuComponent parentMenu = new MenuComponent();
parentMenu.setName("parent");
parentMenu.setTitle("parent");
repository.addMenu(parentMenu);
mc.setParent(parentMenu);
repository.addMenu(mc);
request.setAttribute("repository", repository);
return mapping.findForward("b");
}
}
在这段代码里,建立了一个
parent
child
的菜单,转向b.jsp显示
8. b.jsp的内容为
9.部署和运行,
在地址栏中输入http://localhost:8080/test-menu/test.do效果如下
更进一步:
通过上面那个简单的例子,我们已经知道如何建立一个简单的菜单了。但是菜单的展现形式并不是我们所熟悉的类windows目录结构的形式,很容易使得用户用起来感到别扭,那么怎么实现这种效果(如下图)呢?
下面是我的实现步骤:
(1)-(7)同上。
(8)
前端显示代码如下:
跟前面例子不同的地方主要是阴影区域,menuDisplayer变成了Velocity,
并且通过config="/templates/xtree.html"来控制显示方式。
但是默认的显示方式可能并不是我们想要的,如果想实现自己的效果就要自己去改写xtree.html文件。
该文件的原始内容是这样的:
代码分析:
var $node = new WebFXTree('$title'#if($menu.url),'$!menu.url'#end);
新建一个根节点。
var $node = new WebFXTreeItem('$title'#if($menu.url),'$!menu.url'#end); //新建子节点
${menu.parent.name}.add($node);//建立起节点之间的父子关系。
如果使用如上默认的xtree.html作为显示模版,则将所有子节点的图标为“基础理论”“其它类型”前面的图标。有时候这跟我们的本意是不一样的。比如这些叶子节点语义上是“目录”,只不过当前没有“文件”罢了,而如果如下显示很可能给用户一个错觉,那就是把“基础理论”“其它类型”这些“目录”当成“文件”看了。
我们可以通过改变xtree.html来消除这种歧异,修改后的文件如图所示:
阴影部分为增加的内容:
我们先取出再test.java里为menu的url属性
#set ($url = $displayer.getMessage($menu.url))
阴影部分根据url 判断当前这个menu是不是“文件”,如果url是真的是文件则按照默认方式显示,如果不是则按照“目录显示”。
还有一个问题:
一般含有树状菜单的页面都被设计成frameset,
我们点击树的一个节点,会在main页面中显示返回的页面。这是通过设置
在struts-menu里,你如果使用 DropDownMenuDisplayer,可以设置menu的target属性,但是如果你使用VelocityMenuDisplayer显示,设置target属性
是不会起作用的。因为真正实现显示的是scripts/xtree.js,而xtree.js会对menu设置的target视而不见,那只能通过修改xtree.js的代码来设置target了。
在WebFXTreeAbstractNode的定义中,增加了一个target属性:
this.target = "Main"; //Main是显示结果frame的名字
这样target的问题就解决了!
相关推荐
### 使用Struts-menu实现网页菜单的关键知识点 #### Struts-menu简介 Struts-menu是一个基于Apache Struts框架的扩展,用于简化网页菜单的创建与管理。它不仅提供了多种样式的菜单,如下拉菜单(`DropDownMenu`)、...
7. **权限控制**:Struts-menu支持与Spring Security或Apache Shiro等权限管理框架集成,可以实现菜单项的动态显示,根据用户的权限来决定哪些菜单可以被看到或点击。 8. **自定义扩展**:除了基本功能,开发者还...
Struts-Menu是一个基于...通过这个Struts-Menu实例教程,你将学会如何在Struts应用中集成和使用Struts-Menu,创建出符合用户需求的动态菜单系统。实践中,不断调试和完善,你将能够掌握这个工具并提升你的Web开发技能。
5. **使用`struts-menu`标签**:在JSP页面中,使用`struts-menu`提供的标签来渲染菜单。这些标签会根据配置的数据源生成HTML代码。 6. **注意事项**:集成过程中可能会遇到的问题包括版本兼容性、资源加载问题、...
struts-menu-2.4.1.jar struts-menu-2.4.1.jar
Struts-menu是一个基于Java的开源项目,用于在Struts框架中生成动态菜单。这个例子是Struts-menu的一个实例,提供给需要了解或使用Struts-menu的开发者参考。下面将详细介绍Struts-menu及其在实际开发中的应用,以及...
Struts-menu是一个开源项目,主要用于在基于Struts的Web应用程序中生成动态菜单。它提供了多种显示样式,并且可以根据用户权限进行动态控制。以下是对Struts-menu集成和使用的详细说明: 首先,集成Struts-menu需要...
4. **动态菜单**:Struts-menu支持动态生成菜单,这意味着菜单内容可以根据用户角色、权限或业务状态动态变化。这在多用户、多权限的复杂应用中非常实用。 5. **视频教程**:“速动画教程第十四集.exe”和“.rtf”...
Struts-menu入门Demo是一个针对Java Web开发人员的实践教程,主要使用了Struts、Hibernate和MySQL这三大核心技术。这个入门示例提供了一个完整的项目结构,包括数据库文件,使得开发者能够直接运行并理解其工作原理...
struts-menu 2.4.3.jar
这个组件包含了一些核心的JAR文件(如struts-menu-core-2.0.jar),这些文件包含了实现菜单功能所需的所有类和方法。同时,它还提供了一些示例代码和配置文件,帮助开发者快速理解和使用这个组件。 在lib目录下,你...
Struts-menu是一个专门为Apache Struts框架设计的菜单生成库,它可以帮助开发者在Web应用程序中创建动态、层次化的菜单结构。这个实例提供了三种不同的菜单实现方式,使得开发者可以根据项目需求选择最适合的方法。 ...
通过以上分析,我们可以了解到Struts-menu如何在Struts框架下实现动态菜单功能,同时加深对Struts、MVC模式、自定义标签等概念的理解。实际操作中,阅读和理解源码能帮助我们更好地定制和维护这样的组件,提升开发...
3. **动态生成菜单**:当用户请求页面时,Struts-menu会根据用户的权限信息,动态生成用户可以访问的菜单项和按钮。未授权的菜单和按钮将不会显示在用户界面上,从而实现了权限控制。 4. **模板渲染**:Struts-menu...
通过Struts-menu,我们可以将菜单配置与业务逻辑分离,从而实现更好的可维护性和可扩展性。 首先,让我们深入理解Struts-menu的核心概念和功能: 1. **配置文件**:Struts-menu的配置通常基于XML文件,这些文件...
struts-menu-2.4.jar,构建强大菜单
Struts-menu是一个在Java Web开发中用于生成动态菜单的开源组件,主要应用于基于Struts框架的应用程序。这个组件能够帮助开发者从XML配置文件中提取数据,生成用户界面的菜单结构,使得应用程序的导航部分更加灵活和...
Struts-Menu.jar 是一个基于Java的开源项目,主要用于在Struts框架中生成动态菜单。Struts是一个广泛使用的MVC(Model-View-Controller)框架,它帮助开发者构建可维护性和扩展性良好的Web应用程序。StrutsMenu是...
总的来说,"struts-menu-2.4.3-src" 是一个深入了解和定制Struts Menu的重要资源,对于Java Web开发者来说,深入研究这个源码包,不仅可以提升对Struts框架的理解,也能增强在实际项目中构建高效导航菜单的能力。