Posted on 2007-04-27 17:43
kook 阅读(482)
评论(0) 编辑 收藏 所属分类:
J2EE
AppFuse的作者Raible为我们提供了Struts Menu这样一个菜单组件,并且在AppFuse中使用它来进行了树形菜单的显示。不过AppFuse中做的是一个静态菜单,下面我们利用这个组件来显示一个使用数据库管理的动态树形菜单。
原教程在
http://www.thogau.net/tutorials/tree.html,偶滴工作只是写一个“快速上手指南”。8过里面似乎还有点错误,反正偶照原样做下来的用不了,修正一下。
1. 创建POJO Node.java
最基本也是最重要的工作首先是建立这个菜单的POJO,源文件在这里下载吧,偶8多说了。
2. 使用AppGen生成代码
这一步偶也8想多说了,只要使用过AppFuse的都应该知道啦,8知道的看偶前面的文章。
3. 单元测试
接下来当然就是要修改生成的代码了,首先是单元测试类NodeDAOTest.java。我们要给它加几个测试方法
- testChildren:测试添加和删除子节点
- testParent:测试两级的父子关系
- testDeleteMiddleNode:测试中间节点的删除
具体怎么做的看这里吧,但是要注意最好不要直接下载替换原文件,如果AppFuse的版本不一样,测试方法也是不一样滴,最好把这几个方法单独copy过来。
4. Form Bean
AppGen生产的NodeForm不能满足我们的要求了,所以把这个文件xdoclet-NodeForm.java放到metadata\web下。
5. Action
Action是这里最重要的类了,它修改的地方也很多,所以就直接下载吧。不过偶有一点不太明白的是作者为虾米要把populate()方法的第二个参数设为long而不是Long,他传入的可是Long啊,自己手动改改吧。
6. JSP
接下来是JSP,自动生成的代码基本没用了。这里nodeList.jsp可以删除,nodeForm.jsp被重新写过了。如果你的AppFuse版本比较新,是1.8版以上的,这个JSP下载下来后还需要改一下。搜索property="method",这个是button里的属性,根据button的功能把他们分别修改成property="method.save"、property="method.delete"、property="method.add"等,否则按下按钮可是要报错的.
修改了JSP也别忘了它的资源文件。把这个文件里关于nodeForm部分的内容copy到你自己的ApplicationResources下吧,当然可以汉化一下。
接下来修改menuExpandable.css和menuExpandable.js,直接替换原文件就可以了。
现在可能还是不能正常使用,因为我们的AppFuse下已经有一个菜单了,新的菜单会和原来的菜单起冲突,导致我们的新菜单打不开。到web\decorators下打开default.jsp文件,把含有<c:import url="/WEB-INF/pages/menu.jsp"/>的这一段代码挪到<div id="content"></div>代码段的下面,这样就可以正常使用了。
7. 问题
在使用中我还发现一个问题,就是这个菜单的target有点问题,只有末节点的target有效,其它节点的target设了也灭有效果,8知道哪位大虾有好的解决办法,偶8胜感激。