30.9. <w:combo>

Combo构件继承自triggerField,是一个下拉框,对应HTML的select标签,提供了动态绑定数据等功能。

30.9.1. 构件信息

表 30.19. 构件信息

Component Typeorg.operamasks.faces.component.form.impl.UICombo
Component Familyjavax.faces.Input
Component Classorg.operamasks.faces.component.form.impl.UICombo
Tag Classorg.operamasks.faces.webapp.form.UIComboTag
Renderer Typeorg.operamasks.faces.component.form.impl.UICombo
Renderer Classorg.operamasks.faces.render.widget.ajax.AjaxComboRenderer

继承体系

+java.lang.Object

++javax.faces.component.UIComponent

+++javax.faces.component.UIComponentBase

++++javax.faces.component.UIOutput

+++++javax.faces.component.UIInput

++++++org.operamasks.faces.component.form.base.UIFieldBase

+++++++org.operamasks.faces.component.form.impl.UIField

++++++++org.operamasks.faces.component.form.base.UITextFieldBase

+++++++++org.operamasks.faces.component.form.impl.UITextField

++++++++++org.operamasks.faces.component.form.base.UITriggerFieldBase

+++++++++++org.operamasks.faces.component.form.impl.UITriggerField

++++++++++++org.operamasks.faces.component.form.base.UIComboBase

+++++++++++++org.operamasks.faces.component.form.impl.UICombo

30.9.2. 属性

表 30.20. 属性

allowBlank 定义类 org.operamasks.faces.component.form.impl.UITextField
类型 javax.el.ValueExpression(java.lang.Boolean)
是否必须 延时求值
是否允许为空 (默认是true)
alwaysSubmit 定义类 org.operamasks.faces.component.form.impl.UIField
类型 javax.el.ValueExpression(boolean)
是否必须 延时求值
构件是否总是提交,与readOnly,disabled属性结合使用。 当一个输入组件的readOnly或disabled设为true时,它的值无法提交到后台。 但如果同时将alwaysSubmit设为true,则它的值可以提交到后台
binding 定义类 javax.faces.component.UIComponentBase
类型 javax.el.ValueExpression(javax.faces.component.UIComponent)
是否必须 延时求值
一个值表达式,用于把该组件链接到一个ManagedBean的某个属性。
blankText 定义类 org.operamasks.faces.component.form.impl.UITextField
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
当设置不允许为空而文本框的内容是空的时候,出错提示的内容
clientValidate 定义类 org.operamasks.faces.component.form.impl.UIField
类型 javax.el.ValueExpression(java.lang.Boolean)
是否必须 延时求值
构件是否进行客户端校验
cls 定义类 org.operamasks.faces.component.form.impl.UIField
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
构件的css样式类名
converter 定义类 javax.faces.component.UIOutput
类型 java.lang.String
是否必须 延时求值
构件注册的转换器
converterMessage 定义类 javax.faces.component.UIInput
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
构件中值转换失败时,构件的提示信息
disabled 定义类 org.operamasks.faces.component.form.base.UIFieldBase
类型 javax.el.ValueExpression(java.lang.Boolean)
是否必须 延时求值
构件是否设置为disabled(默认值:false),disabled属性设置为true后,需设置alwaysSubmit="true",页面值才会提交
editable 定义类 org.operamasks.faces.component.form.impl.UICombo
类型 javax.el.ValueExpression(java.lang.Boolean)
是否必须 延时求值
构件是否可编辑,默认值为true
emptyClass 定义类 org.operamasks.faces.component.form.impl.UITextField
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
当文本框内容为空时的样式(默认是'x-form-empty-field')
emptyText 定义类 org.operamasks.faces.component.form.impl.UITextField
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
当文本框内容为空时显示的文本(默认是null)
fieldClass 定义类 org.operamasks.faces.component.form.impl.UIField
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
field的默认样式(默认值:"x-form-field")
fieldLabel 定义类 org.operamasks.faces.component.form.impl.UIField
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
构件的label
focusClass 定义类 org.operamasks.faces.component.form.impl.UIField
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
当field收到焦点时的样式(默认值:"x-form-focus")
forceSelection 定义类 org.operamasks.faces.component.form.impl.UICombo
类型 javax.el.ValueExpression(java.lang.Boolean)
是否必须 延时求值
用户选择的值是否必须为下拉列表中的一项,默认为false
handleHeight 定义类 org.operamasks.faces.component.form.impl.UICombo
类型 javax.el.ValueExpression(java.lang.Integer)
是否必须 延时求值
下拉列表框的把手的高度,单位为px(当resizable属性的值为true时此属性才会起作用),默认为8px。
hidden 定义类 org.operamasks.faces.component.form.impl.UIField
类型 javax.el.ValueExpression(java.lang.Boolean)
是否必须 延时求值
构件是否可见。
hideLabel 定义类 org.operamasks.faces.component.form.impl.UIField
类型 javax.el.ValueExpression(java.lang.Boolean)
是否必须 延时求值
是否完全隐藏构件的label(默认值:false)
hideTrigger 定义类 org.operamasks.faces.component.form.impl.UITriggerField
类型 javax.el.ValueExpression(java.lang.Boolean)
是否必须 延时求值
是否完全隐藏构件的下拉图标(默认值:false)
id 定义类 javax.faces.component.UIComponentBase
类型 java.lang.String
是否必须 延时求值
这个组件的组件标识符。这个值在最近的命名容器类型的父组件范围内,必须是唯一的。
immediate 定义类 javax.faces.component.UIInput
类型 javax.el.ValueExpression(boolean)
是否必须 延时求值
如果该属性设置为true,该构件的校验和转换就会在应用请求值阶段进行,反之,在处理验证阶段执行
initConfig 定义类 org.operamasks.faces.component.form.impl.UIField
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
初始化对象,取值可以是ExtConfig对象, 或String,表示一个JavaScript对象,比如:{"a": "avalue", "b":true, "c":200, "d":"var::dvalue"} 如果取值是表示一个JavaScript对象的String,则key必须用(双)引号包起来,比如"a"。
inputType 定义类 org.operamasks.faces.component.form.impl.UIField
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
field的类型
invalidClass 定义类 org.operamasks.faces.component.form.impl.UIField
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
当field被标记为invalid时的样式(默认值:"x-form-invalid")
jsvar 定义类 org.operamasks.faces.component.form.impl.UIField
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
客户端脚本使用的javascript变量名,使用此变量名可以在客户端脚本中引用构件对应的客户端对象
labelSeparator 定义类 org.operamasks.faces.component.form.impl.UIField
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
显示在label后面的分隔符(默认值:':')。
labelStyle 定义类 org.operamasks.faces.component.form.impl.UIField
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
field的label的CSS样式(默认值:如果设置了父容器的labelStyle就使用父容器的labelStyle,否则为'')
listAlign 定义类 org.operamasks.faces.component.form.impl.UICombo
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
下拉列表与构件的对齐类型,默认值为'tl-bl'
listClass 定义类 org.operamasks.faces.component.form.impl.UICombo
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
下拉列表的CSS样式类
listWidth 定义类 org.operamasks.faces.component.form.impl.UICombo
类型 javax.el.ValueExpression(java.lang.Integer)
是否必须 延时求值
下拉列表的宽度
maskRe 定义类 org.operamasks.faces.component.form.impl.UITextField
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
用来限制用户输入的字符类型的正则表达式,只有敲入的字符符合正则表达式时,才显示出来 (默认是null)
maxHeight 定义类 org.operamasks.faces.component.form.impl.UICombo
类型 javax.el.ValueExpression(java.lang.Integer)
是否必须 延时求值
构件下拉列表的最大高度
maxLength 定义类 org.operamasks.faces.component.form.impl.UITextField
类型 javax.el.ValueExpression(java.lang.Integer)
是否必须 延时求值
当文本框内容的最大长度
maxLengthText 定义类 org.operamasks.faces.component.form.impl.UITextField
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
当文本框内容的长度大于设置的最大长度值时,出错提示的内容
minChars 定义类 org.operamasks.faces.component.form.impl.UICombo
类型 javax.el.ValueExpression(java.lang.Integer)
是否必须 延时求值
在自动补全发生时用户输入字符的最小长度(在typeAhead属性为true时有效)
minHeight 定义类 org.operamasks.faces.component.form.impl.UICombo
类型 javax.el.ValueExpression(java.lang.Integer)
是否必须 延时求值
构件下拉列表的最小高度
minLength 定义类 org.operamasks.faces.component.form.impl.UITextField
类型 javax.el.ValueExpression(java.lang.Integer)
是否必须 延时求值
文本框内容的最小长度 (默认是0)
minLengthText 定义类 org.operamasks.faces.component.form.impl.UITextField
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
当文本框内容的长度小于设置的最小长度值时,出错提示的内容
minListWidth 定义类 org.operamasks.faces.component.form.impl.UICombo
类型 javax.el.ValueExpression(java.lang.Integer)
是否必须 延时求值
构件下拉列表的最小宽度
msgTarget 定义类 org.operamasks.faces.component.form.impl.UIField
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
错误信息文本的显示位置
onblur 定义类 org.operamasks.faces.component.form.impl.UIField
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
构件的onblur事件发生(构件失去输入焦点时触发)时执行的JavaScript代码
onchange 定义类 org.operamasks.faces.component.form.impl.UIField
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
构件的onchange事件发生(内容改变时触发)时执行的JavaScript代码
oncollapse 定义类 org.operamasks.faces.component.form.impl.UICombo
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
构件的oncollapse事件发生(构件收缩时触发)时执行的JavaScript代码
ondisable 定义类 org.operamasks.faces.component.form.impl.UIField
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
构件的ondisable事件发生(构件变为无效时触发)时执行的JavaScript代码
onenable 定义类 org.operamasks.faces.component.form.impl.UIField
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
构件的onenable事件发生(构件变为有效时触发)时执行的JavaScript代码
onexpand 定义类 org.operamasks.faces.component.form.impl.UICombo
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
构件的onexpand事件发生(构件展开时触发)时执行的JavaScript代码
onfocus 定义类 org.operamasks.faces.component.form.impl.UIField
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
构件的onfocus事件发生(构件获取焦点时触发)时执行的JavaScript代码
onhide 定义类 org.operamasks.faces.component.form.impl.UIField
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
构件的onhide事件发生(构件隐藏时触发)时执行的JavaScript代码
onselect 定义类 org.operamasks.faces.component.form.impl.UICombo
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
构件的onselect事件发生(构件选择时触发)时执行的JavaScript代码
onshow 定义类 org.operamasks.faces.component.form.impl.UIField
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
构件的onshow事件发生(构件显示时触发)时执行的JavaScript代码
readOnly 定义类 org.operamasks.faces.component.form.impl.UIField
类型 javax.el.ValueExpression(java.lang.Boolean)
是否必须 延时求值
是否在HTML中将field标识为readOnly(默认值:false),readOnly属性设置为true后,需设置alwaysSubmit="true",页面值才会提交。此属性暂不支持w:simpleHtmlEditor、w:radioGroup、w:checkBoxGroup
regex 定义类 org.operamasks.faces.component.form.impl.UITextField
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
用于验证时测试域值的一个JavaScript RegExp对象,允许使用Perl风格的语法。如果提供了该属性值,这个正则表达式仅当基本Ext验证器都返回true时被调用,调用时会传给它当前的域值。如果测试失败,这个域将用regexText指定的文本标记为不合法
regexText 定义类 org.operamasks.faces.component.form.impl.UITextField
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
regex属性校验失败后,出错提示的内容
rendered 定义类 javax.faces.component.UIComponentBase
类型 boolean(boolean)
是否必须 延时求值
一个标志,指出该组件是否要在任何随后的form提交过程中被渲染或处理。 这个属性的缺省值是true。
required 定义类 javax.faces.component.UIInput
类型 javax.el.ValueExpression(boolean)
是否必须 延时求值
构件是否不允许提交空值
requiredMessage 定义类 javax.faces.component.UIInput
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
当requried属性为真,构件如果提交了空值导致校验失败时构件的提示信息
requiredTrim 定义类 org.operamasks.faces.component.form.impl.UIField
类型 javax.el.ValueExpression(boolean)
是否必须 延时求值
构件进行required校验时是否将输入的值作trim操作后校验
resizable 定义类 org.operamasks.faces.component.form.impl.UICombo
类型 javax.el.ValueExpression(java.lang.Boolean)
是否必须 延时求值
构件的下拉列表是否可以改变大小
selectOnFocus 定义类 org.operamasks.faces.component.form.impl.UITextField
类型 javax.el.ValueExpression(java.lang.Boolean)
是否必须 延时求值
当获得焦点的时候,选中所有文本(默认是false)
selectedClass 定义类 org.operamasks.faces.component.form.impl.UICombo
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
构件获得焦点时构件中文字的CSS样式类
shadow 定义类 org.operamasks.faces.component.form.impl.UICombo
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
构件是否有阴影
showItemTooltip 定义类 org.operamasks.faces.component.form.impl.UICombo
类型 javax.el.ValueExpression(java.lang.Boolean)
是否必须 延时求值
是否为每一个下拉项显示tooltip,默认false
showTooltip 定义类 org.operamasks.faces.component.form.impl.UICombo
类型 javax.el.ValueExpression(java.lang.Boolean)
是否必须 延时求值
是否显示组件的Tooltip,默认false
style 定义类 org.operamasks.faces.component.form.impl.UIField
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
构件渲染后最外层DOM元素的样式。
styleClass 定义类 org.operamasks.faces.component.form.impl.UIField
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
构件渲染后最外层DOM元素的样式类名。若有多个,以空格分隔。
tabIndex 定义类 org.operamasks.faces.component.form.impl.UIField
类型 javax.el.ValueExpression(java.lang.Integer)
是否必须 延时求值
当用户使用tab键时页面上构件获得焦点的顺序索引
title 定义类 org.operamasks.faces.component.form.impl.UICombo
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
构件对应元素的title属性
tooltip 定义类 org.operamasks.faces.component.form.base.UIFieldBase
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
鼠标经过时的弹出信息。
triggerClass 定义类 org.operamasks.faces.component.form.impl.UITriggerField
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
给触发的按钮增加的额外css样式,触发的按钮通常是使用 'x-form-trigger' 和 triggerClass 2个样式的并集
typeAhead 定义类 org.operamasks.faces.component.form.impl.UICombo
类型 javax.el.ValueExpression(java.lang.Boolean)
是否必须 延时求值
当用户输入时是否自动匹配下拉列表的可选值,自动补全匹配到的可选值
validateEvents 定义类 org.operamasks.faces.component.form.impl.UIField
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
构件客户端校验发生的时机
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)形式
valueNotFoundText 定义类 org.operamasks.faces.component.form.impl.UICombo
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
当构件是name/value的combo时,当构件的value值不属于构件对应的store时,构件的提示信息
vtype 定义类 org.operamasks.faces.component.form.impl.UITextField
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
输入值的验证类型,取值为alpha,alphanum,email,url
vtypeText 定义类 org.operamasks.faces.component.form.impl.UITextField
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
当输入值类型验证失败时显示的信息
width 定义类 org.operamasks.faces.component.form.impl.UIField
类型 javax.el.ValueExpression(java.lang.Integer)
是否必须 延时求值
构件的宽度,以象素为单位。

30.9.3. 构件API

30.9.3.1. UIField(Field构件公共基类)

表 30.21. 常用方法

enable 方法签名 public void enable()
参数说明 无参数
返回值 无返回值
方法描述 将构件设置为可用。
disable 方法签名 public void disable()
参数说明 无参数
返回值 无返回值
方法描述 将构件设置为不可用。
show 方法签名 public void show()
参数说明 无参数
返回值 无返回值
方法描述 显示构件。
hide 方法签名 public void hide()
参数说明 无参数
返回值 无返回值
方法描述 隐藏构件。
focus 方法签名 public void focus()
参数说明 无参数
返回值 无返回值
方法描述 当前构件获得焦点。

30.9.4. 示例

下面是一个选择颜色的例子,用<f:selectItems value="#{ColorBean.colors}"/>来绑定所有可以选择的颜色,"value"属性绑定下拉框的值。

<h:form> 
  单项选择列表框: 
  <w:combo id="combo" value="#{ColorBean.color}" emptyText="请选择颜色..." typeAhead="true"> 
    <f:selectItems value="#{ColorBean.colors}"/> 
  </w:combo>
  <w:button value="submit"/> 
</h:form>

后台ColorBean的代码:

@ManagedBean(scope= ManagedBeanScope.SESSION) 
public class ColorBean implements Serializable {
......

  //下拉框绑定的值 
  private String color = null; 

  public String getColor() { 
    return color; 
  } 

  public void setColor(String color) {
    this.color = color; 
  }

  //这里为下拉框提供了3种可以选择的颜色 
  private SelectItem[] colors = {
             new SelectItem("Red", "Red Color"), 
             new SelectItem("Green", "Green Color"),
             new SelectItem("Blue", "Blue Color") };
  
  public SelectItem[] getColors() {
    return colors; 
  }

  ...... 
}