posts - 5, comments - 24, trackbacks - 0, articles - 20
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

使用Struts Menu构造动态树 9

Posted on 2007-04-27 17:43 kook 阅读(477) 评论(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.cssmenuExpandable.js,直接替换原文件就可以了。
    现在可能还是不能正常使用,因为我们的AppFuse下已经有一个菜单了,新的菜单会和原来的菜单起冲突,导致我们的新菜单打不开。到web\decorators下打开default.jsp文件,把含有<c:import url="/WEB-INF/pages/menu.jsp"/>的这一段代码挪到<div id="content"></div>代码段的下面,这样就可以正常使用了。

7. 问题
    在使用中我还发现一个问题,就是这个菜单的target有点问题,只有末节点的target有效,其它节点的target设了也灭有效果,8知道哪位大虾有好的解决办法,偶8胜感激。


只有注册用户登录后才能发表评论。


网站导航: