[译]Struts Menu开发向导
一、从1.X升级到2.X需要做以下事情:
1、改变你的taglib声明中的URI。
<% at taglib uri="" prefix="menu" %>2、改变<plug-in>,使用新的包名"net.sf.navigator." 。
<plug-in className="net.sf.navigator.menu.MenuPlugIn">
3、改变你的menu-config.xml文件,使用新的包名"net.sf.navigator." 。
<Displayer name="Simple"
type="net.sf.navigator.displayer.SimpleMenuDisplayer"/>
二、快速开始:
1、下载最新的struts-menu版本;
2、解包到本地目录;
3、下载Tomcat或者其它Servlet容器;
4、把struts-menu.war包放入Tomcat安装目录的wabapps目录下,并重启Tomcat服务。
5、打开htpp://localhost:8080/struts-menu/
三、把Struts Menu整合到你的应用程序中:
Struts Menu能够被轻易的整合到你的Struts应用程序中,它也可以整合到一个非Struts的应用程序中,但是我不喜欢这样做,所以在此没有提供相应的教程。这里将一步步的带你整合这个标签库。
你需要把struts-menu.jar放到你的WEB-INF/lib目录下。然后使用URI标签声明你的JSP文件中想使用的这个标签库。
如果使用Struts Menu 2.1,你还需要 Jakarta's Standard Tag Library JAR包放入你的WEB-INF/lib目录下。下载地址:IT虾米网,这个文件包括例程WAR包文件和二进制发布包。
1、放入struts-menu.jar包到你的应用程序的WEB-INF/lib目录中。
2、在你的struts-config.xml文件中加入plug-in设置。
<plug-in className="net.sf.navigator.menu.MenuPlugIn">
<set-property property="menuConfig"
value="/WEB-INF/menu-config.xml"/>
</plug-in>
3、你将需要在你的应用程序的/WEB-INF/menu-config.xml文件中定义你的菜单,这里提供一个简单的片断:
<Menu name="contactMenu" title="Contact" location="?Contact">
<Item name="email" title="E-Mail" location="?EMail"/>
<Item name="phone" title="Phone" location="?Phone"/>
</Menu>
更多全面的例程,请查看应用程序的web/WEB-INF目录中的menu-config.xml文件,你可以截取一段作为你需要的菜单。完整的属性列表,可以查看MenuBase class's javadocs(IT虾米网)。
4、在你的JSP文件的顶部加入taglib声明:
<% at taglib uri="" prefix="menu" %>
5、在你的JSP文件中要放置菜单的位置加入taglib代码:
<menu:useMenuDisplayer name="TabbedMenu"
bundle="org.apache.struts.action.MESSAGE">
<menu:displayMenu name="Home"/>
<menu:displayMenu name="About"/>
</menu:useMenuDisplayer>
属性name="TabbedMenu"被定义在menu-config.xml文件的顶部:
<Displayer name="TabbedMenu"
type="net.sf.navigator.displayer.TabbedMenuDisplayer"/>
(译注:其实到此步即可在你的JSP文件中添加相应的菜单了,只不过是没有结合Velocity。在menu-config.xml文件的头部可以定义多个Displayer,每个Displayer都有name和type属性,name属性与JSP文件中menu:useMenuDisplayer标签的name属性相对应,即表明使用何种样式,具体的样式定义便在type属性中定义,type属性中是一个class。在menu-config.xml文件中的菜单定义中的name属性则与JSP文件中的menu:displayMenu标签的name属性相对应。)
使用定制的Velocity模版实施你的菜单,你需要整合Velocity到你的WEB应用程序中。如果需要这样做的话,请完成下面的步骤:
1、确定你的menu-config.xml文件有“Velocity”的displayer定义:
<Displayer name="Velocity"
type="net.sf.navigator.displayer.VelocityMenuDisplayer"/>
2、加入Velocity的JARs包到你的WEB-INF/lib目录中,下载velocity-1.4-rc1.jar(IT虾米网)和velocity-tools-view-1.0.jar(IT虾米网)。
3、加入globalMacros.vm(IT虾米网*checkout*/struts-menu/navigator/web/WEB-INF/classes/globalMacros.vm?content-type=text%2Fplain&rev=1.1(右键另存为))到你的WEB-INF/lib目录中。
4、改变你的JSP文件中displayer的值为“Velocity”,“config”属性指向一个文件(如config="/templates/tabs.html")或者如果tabs.htm在你的WEB-INF/classes目录中的话,则可设config="tabs.html"。
这里提供了一些使用Velocity的displayer例子,可在sample application(IT虾米网)中查看。它总是在你的菜单需要的时候显示CSS,JavaScript和图像文件。下面有一些在当前的Struts Menu中用到的Velocity模版的例子的链接:
CoolMenus: Demo(IT虾米网),
Template(IT虾米网)
NiceTabs: Demo, Template
Tabs: Demo, Template
XTree: Demo, Template
所有相关的有用的文件如果你需要的话都可以在下面的站点上下载:
Images (IT虾米网)
Stylesheets (IT虾米网)
Scripts (IT虾米网)
Templates (IT虾米网)
更多的基于roles的显示/隐藏菜单的信息,请查看FAQs(IT虾米网)。
四、在Struts之外使用Struts Menu:
在2.2版中,Menu Repository能够使用MenuContextListener载入:
<!--
- Loads the menu-config.xml for struts-menu at startup,
- by default from "/WEB-INF/menu-config.xml".
- To override this, add a context-param named "menuConfigLocation"
- web.xml file.
-->
<listener>
<listener-class>net.sf.navigator.menu.MenuContextListener</listener-class>
</listener>
或者如果你使用Spring,甚至更容易。仅仅需要加入下面的部分到你的applicationContext.xml文件中:
<bean id="menu" class="net.sf.navigator.menu.MenuLoader">
<property name="menuConfig">
<value>/WEB-INF/menu-config.xml</value>
</property>
</bean>
<!-- The menuConfig property is an optional attribute. It is set to
/WEB-INF/menu-config.xml by default. -->
感谢Dan Luputan提供MenuLoader类的源代码。
五、从源文件编译:
要从源文件编译这个项目,执行下面的步骤:
1、下载并安装Maven(IT虾米网);
2、创建一个环境变量MAVEN_HOME指出你的Maven的安装目录,然后添加$MAVEN_HOME/bin到你的PATH变量中;
3、操纵这个目录你可以扩展源代码,执行“maven.jar”创建target/struts-menu.jar。
要展开struts-menu例程,需要下面的步骤:
1、下载和安装Tomcat;
2、创建一个环境变量CATALINA_HOME指出你的Tomcat的安装目录;
3、执行“maven deploy”把应用程序展开到Tomcat中;
4、打开IT虾米网在你喜爱的浏览器中。