本文介绍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
分享到:
相关推荐
在这个压缩包中,包含的是ADF4351相关的关键资源,包括驱动代码、中文数据手册和相关论文讲解,这些都是理解和使用ADF4351所必需的知识点。 首先,让我们深入了解一下**ADF4351驱动代码**。驱动代码是与硬件设备...
标题中的“宽带PLL ADF41513(1)_ADF_acceptwcc_adf4360_ADF41513_ADf4360-7_”提及了两个关键器件:ADF41513和ADF4360-7。这两个都是高性能的频率合成器,在无线通信、测试设备以及各种信号处理应用中广泛使用。 ...
本教程将通过一系列简单明了的步骤,帮助初学者了解如何在Oracle Application Development Framework (ADF)中创建下拉列表功能。 #### 二、准备工作 在开始之前,请确保已经安装了Oracle JDeveloper,并熟悉基本的...
ADF41513是Analog Devices公司生产的一种超低噪声频率合成器,它在无线通信系统中用作局部振荡器,用于上变频和下变频部分。它能够提供高达26.5GHz的输出频率,这使得它非常适合于高频率范围的应用,比如无线基础...
标题中的“ADF检验MATLAB程序.zip”指的是一个包含MATLAB代码的压缩文件,用于执行Augmented Dickey-Fuller(ADF)单位根检验。ADF检验是统计学中一种常用的方法,用于判断时间序列数据是否具有单位根,即数据是否...
ADF4351是一款高性能、高精度的频率合成器,广泛应用于无线通信、测试设备、卫星接收等系统中。它具有宽范围的频率输出能力,可编程的分频器和倍频器设计,使得在不同应用中能够灵活调整输出频率。ADF4351的配置主要...
在实际应用中,用户可以通过SPI(串行外设接口)向ADF4351写入控制字,以配置其频率、分频比和其他操作参数。ADF4351通过10个可编程的R计数器和N计数器实现大范围的频率合成能力。而其内置的电荷泵和环路滤波器可以...
ADF4351是射频系统中的关键组件,其宽频率范围、高精度和多路输出能力使其在现代无线通信系统设计中不可或缺。通过理解和利用提供的ADF4351.C和ADF4351.H文件,开发者可以有效地集成这个频率合成器,构建高效、精确...
6. **系统级集成**:将ADF4351集成到更复杂的系统中,如无线通信基站或测试设备,需要考虑信号链路的完整性和干扰抑制,以及与处理器和其他组件的接口设计。 7. **误差分析**:在实际应用中,可能会遇到相位噪声、...
标题中提到的ADF4159是一款频率合成器,它具备了调制功能和能够快速及慢速产生波形的能力,同时工作在高达13GHz的频率。在描述中指出该器件能够提供次赫兹级别的频率分辨率,利用25位固定模数。ADF4159能够用于多种...
总的来说,ADF4351和ADF4350是设计工程师的有力工具,通过高效的频率合成能力,它们能够在复杂的电子系统中实现精确、稳定的信号生成。配合ADF435x_v4_5_0.exe计算工具,设计者可以轻松地根据具体需求进行参数配置,...
ADF41513 数据手册 ADF41513 是一款超低噪频率合成器,可以在无线接收器和发射器的上转换和下转换部分实现高达 26.5 GHz 的局部振荡器(LO)。该器件采用高性能硅锗(SiGe)双极性互补金属氧化物半导体(BiCMOS)...
标题中的“adf4159.rar_FMCW_adf4159”表明这是一个与ADF4159芯片相关的资源包,重点在于FMCW(Frequency Modulated Continuous Wave)技术的应用。FMCW雷达是一种利用连续波频率调制来测量目标距离、速度和角度的...
ADF4350是一款高性能的频率合成器,它广泛应用于无线通信、雷达...通过上述功能和特点,ADF4350在现代通信系统中扮演着关键角色,尤其在追求高速数据传输和高频无线通信的场合,ADF4350提供了一个值得信赖的解决方案。
**ADF5355**是一款高度集成的频率合成器,设计用于在各种无线通信系统中实现精确且灵活的频率生成。它结合了小数N分频和整数N分频锁相环(PLL)技术,允许用户在宽广的频率范围内进行操作。该器件的特性包括: 1. *...
在Verilog中,配置ADF4355通常涉及到创建一个自定义的模块,该模块与ADF4355的控制接口相连。这个模块负责生成控制字并将其发送到ADF4355的控制引脚。文件"ADF4355_config.v"很可能就是这样一个模块,它包含了初始化...
在实际项目中验证ADF4159意味着该芯片已成功应用于特定的系统中,证明了其稳定性和性能。这通常涉及以下环节: 1. **系统集成**:将ADF4159与其他组件(如微控制器、存储器、射频前端等)整合到系统中。 2. **功能...
ADF41513 中文手册 ADF41513 是一款超低噪声频率合成器,可以用来实现高达 26.5 GHz 的频率合成,用于无线接收机和发射机的上变频和下变频部分。该器件采用高性能硅天竺葵 (SiGe) 、双极性互补金属氧化物半导体 ...