ContextMenu构件是一个右键菜单,提供了类似windows中的右键菜单功能。
表 30.24. 构件信息
| Component Type | org.operamasks.faces.widget.ContextMenu |
| Component Family | org.operamasks.faces.widget.ContextMenu |
| Component Class | org.operamasks.faces.component.widget.menu.UIContextMenu |
| Tag Class | org.operamasks.faces.webapp.widget.UIContextMenuTag |
| Renderer Type | org.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.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.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:构件中需被移除的菜单项构件 | |
| 返回值 | 无返回值 | |
| 方法描述 | 移除指定的菜单项 |
这里先用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>