0

我尝试获取日期/时间类型的编辑框的值。如果我用

getComponent("dateField").value 

或者

 getComponent("dateField").getSubmittedValue();

并将输出打印到控制台。如果字段为空或字段不包含有效日期,它总是返回“null”。因此,我无法区分无效输入和空输入。

如果该字段为空,是否有办法获取信息?

4

1 回答 1

2

这取决于您正在测试的刷新阶段。

getValue()将始终返回空白,因为只有可以转换为基础数据类型的内容才会传递给它。即使您禁用验证,转换器检查仍会运行,因为如果您尝试将“这不是日期”放入日期/时间,则会发生严重错误。

getSubmittedValue()如果您正在检查 Invoke Application 或 Render Response 阶段,将始终为 null。这是因为在更新模型值阶段,该submittedValue属性被传递给该value属性并且该submittedValue属性为空。

如果您正在签入验证器,则用户输入的文本值尚未根据验证规则(验证)进行检查,或者它可以转换为正确的数据类型(转换),因此getValue()将返回上次存储的值舍getSubmittedValue()入并给出字符串值(例如“这不是日期”)。

所以答案是您应该能够判断验证器中的字段是否为空,但请记住,自定义验证器仅在您还具有必需的验证器时运行。

于 2014-11-25T12:16:27.000 回答