CheckMenuItem是一种多选的菜单项,必须作为Menu的子元素才可以使用。
表 30.15. 构件信息
| Component Type | org.operamasks.faces.widget.CheckMenuItem |
| Component Family | javax.faces.SelectBoolean |
| Component Class | org.operamasks.faces.component.widget.menu.UICheckMenuItem |
| Tag Class | org.operamasks.faces.webapp.widget.UICheckMenuItemTag |
| Renderer Type(DEFAULT) | javax.faces.Checkbox |
| Renderer Type(MENU) | org.operamasks.faces.widget.CheckMenuItem |
| Renderer Class(AJAX MENU) | org.operamasks.faces.render.widget.ajax.AjaxCheckMenuItemRenderer |
+java.lang.Object
++javax.faces.component.UIComponent
+++javax.faces.component.UIComponentBase
++++javax.faces.component.UIOutput
+++++javax.faces.component.UIInput
++++++javax.faces.component.UISelectBoolean
+++++++javax.faces.component.html.HtmlSelectBooleanCheckbox
++++++++org.operamasks.faces.component.widget.menu.base.UICheckMenuItemBase
+++++++++org.operamasks.faces.component.widget.menu.UICheckMenuItem
表 30.16. 属性
| activeClass | 定义类 | org.operamasks.faces.component.widget.menu.UICheckMenuItem | ||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 构件激活状态时的css样式 | ||||
| binding | 定义类 | javax.faces.component.UIComponentBase | ||
| 类型 | javax.el.ValueExpression(javax.faces.component.UIComponent) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 一个值表达式,用于把该组件链接到一个ManagedBean的某个属性。 | ||||
| converter | 定义类 | javax.faces.component.UIOutput | ||
| 类型 | java.lang.String | |||
| 是否必须 | 否 | 延时求值 | 否 | |
| 构件注册的转换器 | ||||
| converterMessage | 定义类 | javax.faces.component.UIInput | ||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 构件中值转换失败时,构件的提示信息 | ||||
| disabled | 定义类 | org.operamasks.faces.component.widget.menu.UICheckMenuItem | ||
| 类型 | javax.el.ValueExpression(boolean) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 指定构件是否可用 | ||||
| disabledClass | 定义类 | org.operamasks.faces.component.widget.menu.UICheckMenuItem | ||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 构件不可用状态时的css样式 | ||||
| iconClass | 定义类 | org.operamasks.faces.component.widget.menu.UICheckMenuItem | ||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 菜单项前面的图标的CSS Class类名 | ||||
| id | 定义类 | javax.faces.component.UIComponentBase | ||
| 类型 | java.lang.String | |||
| 是否必须 | 否 | 延时求值 | 否 | |
| 这个组件的组件标识符。这个值在最近的命名容器类型的父组件范围内,必须是唯一的。 | ||||
| immediate | 定义类 | javax.faces.component.UIInput | ||
| 类型 | javax.el.ValueExpression(boolean) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 如果该属性设置为true,该构件的校验和转换就会在应用请求值阶段进行,反之,在处理验证阶段执行 | ||||
| label | 定义类 | javax.faces.component.html.HtmlSelectBooleanCheckbox | ||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 指定构件的label | ||||
| onbeforechange | 定义类 | org.operamasks.faces.component.widget.menu.UICheckMenuItem | ||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 构件的选择状态改变时执行的JavaScript代码 | ||||
| rendered | 定义类 | javax.faces.component.UIComponentBase | ||
| 类型 | boolean(boolean) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 一个标志,指出该组件是否要在任何随后的form提交过程中被渲染或处理。 这个属性的缺省值是true。 | ||||
| style | 定义类 | javax.faces.component.html.HtmlSelectBooleanCheckbox | ||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 构件渲染时应用到构件的CSS风格,对应于元素的style属性 | ||||
| styleClass | 定义类 | javax.faces.component.html.HtmlSelectBooleanCheckbox | ||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 空格分隔的CSS风格类名列表,渲染时作为元素的"class"属性 | ||||
| validator | 定义类 | javax.faces.component.UIInput | ||
| 类型 | javax.el.MethodExpression(javax.el.MethodExpression) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 指定一个校验器id或用EL表达式指定一个校验方法。引擎使用该校验器对用户输入进行有效性校验 | ||||
| validatorMessage | 定义类 | javax.faces.component.UIInput | ||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 校验失败时的提示信息 | ||||
| value | 定义类 | javax.faces.component.UIInput | ||
| 类型 | java.lang.String | |||
| 是否必须 | 否 | 延时求值 | 否 | |
| 构件的当前值 | ||||
| valueChangeListener | 定义类 | javax.faces.component.UIInput | ||
| 类型 | javax.el.MethodExpression(javax.el.MethodExpression) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 该属性为一个EL表达式(MethodBinding),表示当值改变时响应事件的方法。表达式所指定的方法必须是void valueChange(javax.faces.event.ValueChangeEvent)形式 | ||||
假设有一个选择文字的菜单,对于文字来说,粗体、斜体和下划线是一种修饰,可以并存,所以选择了CheckMenuItem作为菜单选项,如下的代码,最外面是一个容器w:menuBar标签,w:menuBar里面放了一个w:menu,w:menu里面放了3个菜单项,3个菜单项的"value"属性分别绑定了后台MenuBean的三个属性:"bold","italic"和"underline","valueChangeListener"绑定了后台同样的一个方法"checkValueChanged",当选中某一个菜单项的时候,就执行了"checkValueChanged"方法,然后根据"bold","italic"和"underline"这三个属性的值来构造文字。
<w:menuBar id="mymenu" action="#{MenuBean.menuAction}" autoExpand="false">
<w:menu id="format" label="文字格式">
<w:checkMenuItem label="粗体" style="font-weight:bold" value="#{MenuBean.bold}" valueChangeListener="#{MenuBean.checkValueChanged}"/>
<w:checkMenuItem label="斜体" style="font-style:italic" value="#{MenuBean.italic}" valueChangeListener="#{MenuBean.checkValueChanged}"/>
<w:checkMenuItem label="下划线" style="text-decoration:underline" value="#{MenuBean.underline}" valueChangeListener="#{MenuBean.checkValueChanged}"/>
</w:menu>
</w:menuBar>