构建基于XML的Menu Model

七月 7, 2010 in Oracle 融合中间件

概述

Oracle ADF提供了基于JSF的Menu Model构建方式,通过声明式的开发方式构建菜单及菜单项之间的跳转。基于XML的菜单与ADF Security结合,可以实现对于用户访问安全性的良好控制,对于开发人员来说,简化了开发难度及维护难度。下面将以一个具体的实例,具体说明如何实现基于XML的Menu。

需求

1、两级菜单
2、第一级菜单包括三项:top_menu1,top_menu2,top_menu3
3、第二级菜单为第一级菜单的子菜单,隶属关系如下:
top_menu1的子菜单:sub_menu1_item1、sub_menu1_item2
top_menu2的子菜单:sub_menu2_item1、sub_menu2_item2、sub_menu2_item3
top_menu3的子菜单:sub_menu3_item3

实现
1、创建Unbounded Task Flow,名为site-menu作为菜单流转规则的编辑载体


2、根据需求中确认的菜单流转规则,进行Menu Model流转规则的编辑,首先编辑一级菜单
1)第一级菜单以Wild Card Control Flow Rule为起始点
2)拖动三个View到site-menu,分别命名为top_menu1,top_menu2,top_menu3
3)以Wild Card Control Flow Rule为起点,增加指向步骤2)中创建的View的Control Flow Case,分别命名为goMenu1、goMenu2、goMenu3
完成后的site-menu布局如图:

3、一级菜单确定后,接着编辑二级菜单,编辑方式类似,以top_menu1为例进行说明
1)Wild Card Control Flow Rule为起始点,新增Wild Card Control Flow Rule到site-menu
2)拖动两个View到site-menu,作为top_menu1的子菜单项,分别命名为sub_menu1_item1、sub_menu1_item2
3)以Wild Card Control Flow Rule为起点,增加指向步骤2)中创建的View的Control Flow Case,分别命名为goMenu1Submenu1、goMenu2Submenu2
完成后的site-menu布局如图:

4、完成了菜单流转规则的编辑,就可以通过向导生成Menu Model了,方法很简单,在site-menu上点击鼠标右键,选择“Create ADF Menu Model”,如图所示

5、指定Menu Model的文件名为site_menu
6、生成Menu Model后,会产生一个Menu Model的配置文件,如图所示

7、在Structure面板中根据需求中的规则进行编辑,编辑后的节点规则如图所示
8、一般情况下,常用的Menu节点类型有两种,一种是ItemNode,一种是GroupNode,两者在使用方式上略有不同,ItemNode是实际存在的页面,而GroupNode是一个逻辑的集合,可以引用该集合中的其他页面作为该节点默认指向的页面,在此,我们修改top_menu2为GroupNode
1)在top_menu2中点击鼠标右键,选择“Convert to GroupNode”
2)选择idref为第一个子菜单

9、创建页面模板,进行适当布局,将该Menu Model应用到该模板中,由于布局步骤比较繁琐,在此仅张贴核心代码:
<af:panelGroupLayout id=”pgl1″>
<af:navigationPane id=”np1″ title=”Top Menus” value=”#{site_menu}” var=”topMenus” hint=”tabs” level=”0″>
<f:facet name=”nodeStamp”>
<af:commandNavigationItem text=”#{topMenus.label}” id=”cni1″ action=”#{topMenus.doAction}”/>
</f:facet>
</af:navigationPane>
<af:navigationPane id=”np2″ title=”Secondary Menus” value=”#{site_menu}” var=”secondMenus” hint=”bar”
level=”1″>
<f:facet name=”nodeStamp”>
<af:commandNavigationItem text=”#{secondMenus.label}” id=”cni2″ action=”#{secondMenus.doAction}”/>
</f:facet>
</af:navigationPane>
</af:panelGroupLayout>

10、在site-menu中双击View,生成对应的页面,以新创建的模板为页面模板


11、保存应用,运行top_menu1.jspx,运行结果如图

详细代码请查看:howtoxmlmenu.xml

无相关文章.

0 responses to 构建基于XML的Menu Model

Leave a reply

You must be logged in to post a comment.