30.16. <w:dateMenu>

DateMenu是一个日期菜单,可以通过菜单来选择一个日期,功能和Calendar相似。

30.16.1. 构件信息

表 30.44. 构件信息

Component Typeorg.operamasks.faces.widget.Calendar
Component Familyorg.operamasks.faces.widget.Calendar
Component Classorg.operamasks.faces.component.widget.UICalendar
Tag Classorg.operamasks.faces.webapp.widget.UIDateMenuTag
Renderer Typeorg.operamasks.faces.widget.Menu
Renderer Class(AJAX)org.operamasks.faces.render.widget.ajax.AjaxDateMenuRenderer

继承体系

+java.lang.Object

++javax.faces.component.UIComponent

+++javax.faces.component.UIComponentBase

++++javax.faces.component.UIOutput

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

++++++org.operamasks.faces.component.widget.UICalendar

30.16.2. 属性

表 30.45. 属性

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)
是否必须 延时求值
构件中值转换失败时,构件的提示信息
id 定义类 javax.faces.component.UIComponentBase
类型 java.lang.String
是否必须 延时求值
这个组件的组件标识符。这个值在最近的命名容器类型的父组件范围内,必须是唯一的。
immediate 定义类 javax.faces.component.UIInput
类型 javax.el.ValueExpression(boolean)
是否必须 延时求值
如果该属性设置为true,该构件的校验和转换就会在应用请求值阶段进行,反之,在处理验证阶段执行
jsvar 定义类
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
客户端脚本使用的javascript变量名
label 定义类
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
菜单显示的文本
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属性为真,构件如果提交了空值导致校验失败时构件的提示信息
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)形式

30.16.3. 构件API

30.16.4. 示例

以下例子非常简单,来自 bpdemos,在w:menuBar下面就一个菜单,点击菜单的时候,就弹出日历,选择一个日期后,触发w:menuBar的"action"事件。

<w:menuBar id="mymenu" autoExpand="false" action="#{formwidgets.menu.menuBean.menuAction}">
    <w:dateMenu label="Dates" id="date" />
</w:menuBar>
@ManagedBean(scope=ManagedBeanScope.SESSION)
public class MenuBean
{
    ......
    @ManagedProperty
    private Date date = new Date();

    public String menuAction(UIComponent item) {
        String label = (String) item.getAttributes().get("label");
        if (label == null) {
            if (item instanceof UIChooseSkin || item instanceof UISelectOne) {
                label = ((UIInput) item).getValue().toString();
            } else {
                label = item.getAttributes().get("value").toString();
            }
        }
        selected = item.getId() + " (" + label + ") selected";
        
        PartialUpdateManager.getInstance().markUpdate("selectedOutput");

        return null;
    }
    ......
}