近段时间做了一个项目,项目的前台框架是基于webwork+freemarker。需要一个树型菜单,于是研究了一下树型菜单的编写方法,发现大多数树型菜单都是利用xml通过javascript生成的,对于dom不太熟悉的开发这来说,显得太复杂,而且层次感不强。 我们项目采用的是另外一种方法,把菜单的动态生成的所有工作交给业务类处理,然后处理,返回一个html代码以字符串的形式给界面(freemarker),前台只需调用即可以了,这样做的一个最大的好处就是菜单动态数据的生成是在java编译阶段生成,而且只需要生成一次,即保存在内存中,这样就减少了界面重复查询数据的负担,项目运行结果发现菜单运行的效率非常高,一下是它实现核心代码:



































































































































界面调用的代码就简单的不能再简单了:




































































































form标签里面的东东就是生成菜单的地方,只需要一句话${Session["productList"]?if_exists} ,呵呵,是不是很简单呀?
我的体会是xml技术可以生成静态和动态的菜单,功能非常强大,但是对于小型的又常常需要数据库的动态数据的需求,用这种方法不失为一种便捷,高效的方法,希望能与大家共享。