30.11. <w:contextMenu>

ContextMenu构件是一个右键菜单,提供了类似windows中的右键菜单功能。

30.11.1. 构件信息

表 30.24. 构件信息

Component Typeorg.operamasks.faces.widget.ContextMenu
Component Familyorg.operamasks.faces.widget.ContextMenu
Component Classorg.operamasks.faces.component.widget.menu.UIContextMenu
Tag Classorg.operamasks.faces.webapp.widget.UIContextMenuTag
Renderer Typeorg.operamasks.faces.widget.ContextMenu
Renderer Class(AJAX)org.operamasks.faces.render.widget.ajax.AjaxContextMenuRenderer

继承体系

+java.lang.Object

++javax.faces.component.UIComponent

+++javax.faces.component.UIComponentBase

++++javax.faces.component.UICommand

+++++org.operamasks.faces.component.widget.menu.base.UIMenuBase

++++++org.operamasks.faces.component.widget.menu.UIMenu

+++++++org.operamasks.faces.component.widget.menu.base.UIContextMenuBase

++++++++org.operamasks.faces.component.widget.menu.UIContextMenu

30.11.2. 属性

表 30.25. 属性

action 定义类 javax.faces.component.UICommand
类型 javax.el.MethodExpression(javax.el.MethodExpression)
是否必须 延时求值
特定Action事件激活时调用的方法
binding 定义类 javax.faces.component.UIComponentBase
类型 javax.el.ValueExpression(javax.faces.component.UIComponent)
是否必须 延时求值
一个值表达式,用于把该组件链接到一个ManagedBean的某个属性。
eventType 定义类 org.operamasks.faces.component.widget.menu.UIContextMenu
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
事件类型,如果没有指定,则为"contextmenu"
for 定义类 org.operamasks.faces.component.widget.menu.base.UIContextMenuBase
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
构件的id,作为右键菜单的所有者
id 定义类 javax.faces.component.UIComponentBase
类型 java.lang.String
是否必须 延时求值
这个组件的组件标识符。这个值在最近的命名容器类型的父组件范围内,必须是唯一的。
jsvar 定义类 org.operamasks.faces.component.widget.menu.UIMenu
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
客户端脚本使用的javascript变量名,引用脚本中Ext.menu.Menu对象
rendered 定义类 javax.faces.component.UIComponentBase
类型 boolean(boolean)
是否必须 延时求值
一个标志,指出该组件是否要在任何随后的form提交过程中被渲染或处理。 这个属性的缺省值是true。
triggerJsvar 定义类 org.operamasks.faces.component.widget.menu.UIMenu
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
客户端脚本使用的javascript变量名,引用脚本中Ext.menu.Menu对象上的按钮

30.11.3. 构件API

30.11.3.1. UIMenu(contextMenu的构件类)

表 30.26. 常用方法

addMenu 方法签名 public void addMenu(UIMenu menu)
参数说明 menu: 要添加的菜单构件。
返回值 无返回值
方法描述 追加一个菜单构件作为当前菜单的子菜单
addMenu 方法签名 public void addMenu(int index, UIMenu menu)
参数说明 index::插入位置。menu:待添加的菜单构件。
返回值 无返回值
方法描述 在指定位置插入一个菜单构件作为当前菜单的子菜单
addMenuItem 方法签名 public void addMenuItem(UIComponent item)
参数说明 item:待添加的子构件。可接受UICommandMenuItem、UICheckMenuItem、UIRadioMenuItem、UILinkMenuItem、UICalendar、UISeparator、HtmlOutputText、HtmlOutputLink、UIChooseSkin等类型的构件。
返回值 无返回值
方法描述 添加一个构件作为当前菜单的子构件。
addMenuItem 方法签名 public void addMenuItem(int index, UIComponent item)
参数说明 index:插入子构件的位置。item:待添加的子构件。
返回值 无返回值
方法描述 在指定位置插入一个构件作为当前菜单的子构件。
removeAll 方法签名 public void removeAll()
参数说明 无参数
返回值 无返回值
方法描述 移除构件包含的所有构件
removeMenu 方法签名 public void removeMenu(UIMenu menu)
参数说明 menu:需被移除的UIMenu
返回值 无返回值
方法描述 移除指定的菜单
removeMenuItem 方法签名 public void removeMenuItem(UIComponent item)
参数说明 item:构件中需被移除的菜单项构件
返回值 无返回值
方法描述 移除指定的菜单项

30.11.4. 示例

这里先用div定义了一个宽400px,高200px的区域,然后w:contextMenu标签通过用"for"属性来指定它属于这个div,ContextMenu也是一个容器,和MenuBar相似,里面放Menu,如下代码:

<div id="contextDiv" style="width:400px;height:200px;border:1px solid">
    Right click here to show context menu.
</div>
<w:contextMenu for="contextDiv" action="#{MenuBean.menuAction}">
    <w:dateMenu label="Dates" value="#{MenuBean.date}"/>
    <w:menu label="Themes">
        <w:chooseSkin/>
    </w:menu>
</w:contextMenu>