`

ADF中下拉列表的必填验证

 
阅读更多

本文介绍ADF的SelectOneChoice控件的两个方面:

1. 运行时的数据模型变化;

2. 必填验证

 

1. 运行时的数据模型变化

当ADF给页面上添加SelectOneChoice控件时,不是直接把绑定的数据源每个项目的value设置到控件上,而是把数据源的每条项目

的索引值设置到控件上。在数据提交时,又会通过索引找到对应的选项,最后再把选项对应的值更新到模型层。

例如我们有下面的数据源:

 

<selectItems>
    <selectItem>
        <value>M</value>
        <label>Male</value>
    </selectItem>
    <selectItem>
        <value>F</value>
        <label>Female</value>
    </selectItem>
</selectItems>

 

 对应到selectOneChoice控件上的数据模型为:

 

<items>
    <item>
        <value>0</value>
        <label>Male</value>
    </item>
    <item>
        <value>1</value>
        <label>Female</value>
    </item>
</items>

 

2. 必填验证

ADF提供了可配置的必填项目验证,我们只需要把控件的required属性设置为true就可以了,如下所示:

<af:selectOneChoice label="#{uiBundle['label.title.state']}"
       id="soc2"
       value="#{bindings.stateId.inputValue}"
       required='true'>
       <f:selectItems value="#{bindings.stateList.items}" id="si3"/>
</af:selectOneChoice>
  

这里有一个前提条件:你需要把stateList(即LOV)数据源设置为不包含空行项目(即不选中"Inculde No Selection Item"),如下图:

 

 

区别在于:

1)未勾选“Incude "No Selection" Item”时,ADF在生成下拉列表时,会自动添加一条空项目作为第一条选项,这个选项的value和label都为空。当从下拉列表中选择一条选项之后,空白的选项就自动没有了。

2)勾选“Incude "No Selection" Item”时,ADF在生成下拉列表时,会自动添加一条空项目作为第一条选项,这个选项的value为"0",label为空。当从下拉列表中选择一条选项之后,空白的选项仍然在,不会消失。

 

很显然,当下拉列表是一个必填项时,1)的行为很符合我们的要求。但是当下拉列表不是必填项目时,我们可能在选择了一条选项之后,又想去掉原先的原则,显然1)就不能符合我们的要求了。这时候我们需要用2),没啥问题。

 

而当下拉列表是条件依赖必填时(当checkbox选中时,必填,否则不必填),显然我们还是需要使用2)。但是因为下拉列表保存的是索引值而不是真正的模型层的值,而此处的空白选项的值为0,所以即使我们设置了required='true',也不会弹出提示必填的消息,因为无法区分空白选项和真实有效的选项。

 

此处我们就需要重写AdfRichSelectOneChoice的getSubmittedValue方法,当我们判断选中的选项为第一项且它的label为空时,

我们就自动返回空字符串,而不是"0",代码如下:

/**
 * The function is used to override the getSubmittedValue for dropdown list
 * on the page to force the required validation to take effect when user 
 * select a blank item in dropdown list.
 */
overrideSOCGetSubmittedValue = function() {
    AdfRichSelectOneChoice.prototype.getSubmittedValue = function() {
        var submittedValue = AdfUIEditableValue.prototype.getSubmittedValue.call(this);
        if (!this.getRequired()) {
            return submittedValue;
        }
        
        var items = this.getSelectItems();
        var firstItem = null;
        if (items != null && items.length > 0) {
            firstItem = items[0];
        }
        
        if (firstItem == null) {
            return submittedValue;
        }
        
        // when user select a blank item, then return submitted value as blank string
        // in order to let the required validation to take effect.
        if (firstItem.getValue() == submittedValue && firstItem.getLabel() == "") {
            return "";
        }
    }
}
 

然后在页面加载的时候,触发上面的javascript,这样我们就可以继续使用ADF提供的可配置必填验证了,代码如下:

<af:clientListener method="overrideSOCGetSubmittedValue" type="load"/>
 

 

 

  • 大小: 68.3 KB
分享到:
评论

相关推荐

    宽带PLL ADF41513(1)_ADF_acceptwcc_adf4360_ADF41513_ADf4360-7_

    标题中的“宽带PLL ADF41513(1)_ADF_acceptwcc_adf4360_ADF41513_ADf4360-7_”提及了两个关键器件:ADF41513和ADF4360-7。这两个都是高性能的频率合成器,在无线通信、测试设备以及各种信号处理应用中广泛使用。 ...

    adf4351的驱动代码、中文数据手册、相关论文讲解,adf4350中文手册,C,C++

    在这个压缩包中,包含的是ADF4351相关的关键资源,包括驱动代码、中文数据手册和相关论文讲解,这些都是理解和使用ADF4351所必需的知识点。 首先,让我们深入了解一下**ADF4351驱动代码**。驱动代码是与硬件设备...

    ADF下拉框傻瓜教程

    本教程将通过一系列简单明了的步骤,帮助初学者了解如何在Oracle Application Development Framework (ADF)中创建下拉列表功能。 #### 二、准备工作 在开始之前,请确保已经安装了Oracle JDeveloper,并熟悉基本的...

    ADF4351中文数据手册

    在实际应用中,用户可以通过SPI(串行外设接口)向ADF4351写入控制字,以配置其频率、分频比和其他操作参数。ADF4351通过10个可编程的R计数器和N计数器实现大范围的频率合成能力。而其内置的电荷泵和环路滤波器可以...

    ADF41513中文数据手册

    ADF41513是Analog Devices公司生产的一种超低噪声频率合成器,它在无线通信系统中用作局部振荡器,用于上变频和下变频部分。它能够提供高达26.5GHz的输出频率,这使得它非常适合于高频率范围的应用,比如无线基础...

    ADF检验MATLAB程序.zip_ADF单位根检验_ADF检测_MATLAB adf_adftest matlab_adf检验

    标题中的“ADF检验MATLAB程序.zip”指的是一个包含MATLAB代码的压缩文件,用于执行Augmented Dickey-Fuller(ADF)单位根检验。ADF检验是统计学中一种常用的方法,用于判断时间序列数据是否具有单位根,即数据是否...

    ADF4350中文资料

    总之,ADF4350是一款功能强大、性能卓越的射频合成器,以其宽泛的频率覆盖范围、低相位噪声、灵活的分频模式和数字控制能力,在无线通信技术中扮演着至关重要的角色。无论是对于专业无线电工程师还是电子爱好者来说...

    ADF4351配置程序.zip_ADF4351_ADF4351程式_adf4350配置_adf4351 程序_adf4351配置

    ADF4351是一款高性能、高精度的频率合成器,广泛应用于无线通信、测试设备、卫星接收等系统中。它具有宽范围的频率输出能力,可编程的分频器和倍频器设计,使得在不同应用中能够灵活调整输出频率。ADF4351的配置主要...

    ADF5355中文数据手册

    **ADF5355**是一款高度集成的频率合成器,设计用于在各种无线通信系统中实现精确且灵活的频率生成。它结合了小数N分频和整数N分频锁相环(PLL)技术,允许用户在宽广的频率范围内进行操作。该器件的特性包括: 1. *...

    ADF4351.rar_ADF4351_ADF4351锁相环例程_adf4351双路输出_adf4351辅助输出

    ADF4351是射频系统中的关键组件,其宽频率范围、高精度和多路输出能力使其在现代无线通信系统设计中不可或缺。通过理解和利用提供的ADF4351.C和ADF4351.H文件,开发者可以有效地集成这个频率合成器,构建高效、精确...

    adf4351的驱动代码、中文数据手册、相关论文讲解_论文讲解_adf4351中文手册_ADF4351驱动代码_ADF4351_

    6. **系统级集成**:将ADF4351集成到更复杂的系统中,如无线通信基站或测试设备,需要考虑信号链路的完整性和干扰抑制,以及与处理器和其他组件的接口设计。 7. **误差分析**:在实际应用中,可能会遇到相位噪声、...

    ADF4159中文资料

    标题中提到的ADF4159是一款频率合成器,它具备了调制功能和能够快速及慢速产生波形的能力,同时工作在高达13GHz的频率。在描述中指出该器件能够提供次赫兹级别的频率分辨率,利用25位固定模数。ADF4159能够用于多种...

    ADF4351,4350中文手册,英文手册,数值计算工具

    总的来说,ADF4351和ADF4350是设计工程师的有力工具,通过高效的频率合成能力,它们能够在复杂的电子系统中实现精确、稳定的信号生成。配合ADF435x_v4_5_0.exe计算工具,设计者可以轻松地根据具体需求进行参数配置,...

    adf4159.rar_FMCW_adf4159

    标题中的“adf4159.rar_FMCW_adf4159”表明这是一个与ADF4159芯片相关的资源包,重点在于FMCW(Frequency Modulated Continuous Wave)技术的应用。FMCW雷达是一种利用连续波频率调制来测量目标距离、速度和角度的...

    ADF41513 数据手册.PDF

    ADF41513 数据手册 ADF41513 是一款超低噪频率合成器,可以在无线接收器和发射器的上转换和下转换部分实现高达 26.5 GHz 的局部振荡器(LO)。该器件采用高性能硅锗(SiGe)双极性互补金属氧化物半导体(BiCMOS)...

    verilog配置ADF4355

    在Verilog中,配置ADF4355通常涉及到创建一个自定义的模块,该模块与ADF4355的控制接口相连。这个模块负责生成控制字并将其发送到ADF4355的控制引脚。文件"ADF4355_config.v"很可能就是这样一个模块,它包含了初始化...

    ADF4159手册和调试demo.rar

    在实际项目中验证ADF4159意味着该芯片已成功应用于特定的系统中,证明了其稳定性和性能。这通常涉及以下环节: 1. **系统集成**:将ADF4159与其他组件(如微控制器、存储器、射频前端等)整合到系统中。 2. **功能...

    ADF5355 SPI程序

    - **EV-ADF5355SD1Z_UG-802.pdf**:这是ADF5355的评估板用户指南,包含了硬件连接和软件配置的详细信息,是理解如何将ADF5355集成到系统中的关键资源。 - **ADF5355.pdf**:该文档提供了ADF5355的完整技术规格,包括...

Global site tag (gtag.js) - Google Analytics