RadioMenuItem是一个带Radio按钮的单选风格菜单项,RadioMenuItem用于在菜单里的一组选项中进行唯一性选择。RadioMenuItem必须作为Menu的子构件(w:radioMenuItem必须内嵌在w:menu中)使用,关于更多如何使用Menu的信息,请阅读Menu的构件参考。
表 30.121. 构件信息
| Component Type | org.operamasks.faces.widget.RadioMenuItem |
| Component Family | javax.faces.SelectOne |
| Component Class | org.operamasks.faces.component.widget.menu.UIRadioMenuItem |
| Tag Class | org.operamasks.faces.webapp.widget.UIRadioMenuItemTag |
| Renderer Type(DEFAULT) | javax.faces.SelectOne |
| Renderer Type(MENU) | org.operamasks.faces.widget.RadioMenuItem |
| Renderer Class(AJAX) | org.operamasks.faces.render.widget.ajax.AjaxRadioMenuItemRenderer |
+java.lang.Object
++javax.faces.component.UIComponent
+++javax.faces.component.UIComponentBase
++++javax.faces.component.UIOutput
+++++javax.faces.component.UIInput
++++++javax.faces.component.UISelectOne
+++++++javax.faces.component.html.HtmlSelectOneRadio
++++++++org.operamasks.faces.component.widget.menu.base.UIRadioMenuItemBase
+++++++++org.operamasks.faces.component.widget.menu.UIRadioMenuItem
表 30.122. 属性
| activeClass | 定义类 | org.operamasks.faces.component.widget.menu.UIRadioMenuItem | ||
| 类型 | 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.UIRadioMenuItem | ||
| 类型 | javax.el.ValueExpression(boolean) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 指定构件是否可用 | ||||
| disabledClass | 定义类 | javax.faces.component.html.HtmlSelectOneRadio | ||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 不可用状态时的css样式 | ||||
| iconClass | 定义类 | org.operamasks.faces.component.widget.menu.UIRadioMenuItem | ||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 菜单的图标的CSS风格类 | ||||
| id | 定义类 | javax.faces.component.UIComponentBase | ||
| 类型 | java.lang.String | |||
| 是否必须 | 否 | 延时求值 | 否 | |
| 这个组件的组件标识符。这个值在最近的命名容器类型的父组件范围内,必须是唯一的。 | ||||
| image | 定义类 | org.operamasks.faces.component.widget.menu.UIRadioMenuItem | ||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 菜单所用的图标 | ||||
| immediate | 定义类 | javax.faces.component.UIInput | ||
| 类型 | javax.el.ValueExpression(boolean) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 如果该属性设置为true,该构件的校验和转换就会在应用请求值阶段进行,反之,在处理验证阶段执行 | ||||
| onbeforechange | 定义类 | org.operamasks.faces.component.widget.menu.UIRadioMenuItem | ||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 构件菜单选择被修改之前执行的JavaScript代码 | ||||
| onchange | 定义类 | javax.faces.component.html.HtmlSelectOneRadio | ||
| 类型 | java.lang.String | |||
| 是否必须 | 否 | 延时求值 | 否 | |
| 指定构件失去焦点并且它的值已改变时执行的Javascript代码 | ||||
| onclick | 定义类 | javax.faces.component.html.HtmlSelectOneRadio | ||
| 类型 | java.lang.String | |||
| 是否必须 | 否 | 延时求值 | 否 | |
| 构件被点击时执行的Javascript代码 | ||||
| rendered | 定义类 | javax.faces.component.UIComponentBase | ||
| 类型 | boolean(boolean) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 一个标志,指出该组件是否要在任何随后的form提交过程中被渲染或处理。 这个属性的缺省值是true。 | ||||
| requiredMessage | 定义类 | javax.faces.component.UIInput | ||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 当requried属性为真,构件如果提交了空值导致校验失败时构件的提示信息 | ||||
| style | 定义类 | javax.faces.component.html.HtmlSelectOneRadio | ||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 构件渲染时应用到构件的CSS风格,对应于元素的style属性 | ||||
| styleClass | 定义类 | javax.faces.component.html.HtmlSelectOneRadio | ||
| 类型 | 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)形式 | ||||
<w:menu id="format" label="格式">
<w:radioMenuItem value="#{MenuBean.color}" valueChangeListener="#{MenuBean.radioValueChanged}">
<f:selectItems value="#{MenuBean.colors}"/>
</w:radioMenuItem>
</w:menu>在菜单中显示一组颜色选择的菜单项,当用户改变颜色选择时,通知#{MenuBean.radioValueChanged}对应的方法。它的Managed Bean部分代码如下:
public class MenuBean {
....
public enum COLOR { RED, GREEN, BLUE };
private COLOR color = COLOR.RED;
public COLOR getColor() {
return color;
}
public void setColor(COLOR color) {
this.color = color;
}
public SelectItem[] getColors() {
return new SelectItem[] {
new SelectItem(COLOR.RED, "Red"),
new SelectItem(COLOR.GREEN, "Green"),
new SelectItem(COLOR.BLUE, "Blue")
};
}
....
}