struts-menu的扩展问题

项目中用到了struts-menu的VelocityMenuDisplayer.因为在部署到服务器上后会报两个velocity的异常(1.Formatter class not found;2 cannot find menuMacros.vm)虽然不致命,但总归看起来不舒服.于是想把它去掉.看了一下source code发现VMD的initialize方法里初始化了velocity, 载入velocity的两个配置文件(default,custom),于是很自然的想用一个自己写的velocity配置.ok,继承 VMD 然后改两个名字.

不成功.

仔细一看才发现,VMD的initialize方法是静态的, 会被MenuRepository这么调用:

public void addMenuDisplayerMapping(MenuDisplayerMapping displayerMapping) {
displayers.put(displayerMapping.getName(), displayerMapping);
if (displayerMapping.getType().equals(“net.sf.navigator.displayer.VelocityMenuDisplayer”)) {
if (servletContext == null) {
log.error(“ServletContext not set – can’t initialize Velocity”);
} else {
VelocityMenuDisplayer.initialize(servletContext);
}
}
}

真够狠的,怎么扩展啊.总不至于把MenuRepository也改了吧.

Comments are closed.