对只读编辑框使用标准验证?

时间:2012-04-06 12:05:47

标签: xpages

我最近的一些帖子与我在提交按钮中进行所有验证的事实有关。

我这样做的原因是我有一个设置一些只读编辑框的按钮。那么你可以为只读编辑框配置验证,但它不会在运行时执行。

由于我无法解决这个问题,并希望对验证有一致的看法,因此我在提交按钮上使用了自己的验证。

有没有办法验证只读字段?

将所有代码放在“提交”按钮中的一个好处是所有验证代码都在同一个地方,但我可以看到在使用自定义控件时它也会导致可移植性问题。

另一个问题是如果我的“提交”按钮未标记为“提交”按钮,如何启动验证。

2 个答案:

答案 0 :(得分:2)

正如Dec所说,ReadOnly标志导致在没有<input>标记的情况下呈现字段的内容。这使得在客户端无法进行验证,并且由于没有数据被提交回JVM,因此在提交时将忽略在该字段上编码的验证。

但是,会触发数据源QuerySaveDocument。将验证放在那里和/或将其放在呈现的字段(readOnly=false)中,并确保在所有带有验证器的字段上设置disableClientSideValidation="true"

您的QuerySaveDocument代码看起来像这样(假设location是readOnly的字段)。

if (personDoc.getItemValueString("Location") == "") {
    @ErrorMessage("The inherited location is blank and that is bad.");
    return false;
}
return true;

这样,基于字段的验证器将首先触发,如果它们都成功,QuerySaveDocument将触发。这意味着如果任何基于字段的验证程序失败,其邮件将显示在您的邮件区域中,但不会显示QuerySaveDocument邮件。所有基于字段的验证程序成功后,才会显示QuerySaveDocument条消息。

答案 1 :(得分:1)

当只读字段呈现给网络浏览器时,它不会使用<input>标记呈现,而是使用简单的<span>标记进行呈现。

验证只能在适当的输入标签上执行,因此您遇到的情况是正确的。没有字段可以在只读模式下进行验证。

有一个选项'显示禁用只读'会为该字段呈现<input disabled="true">类型标记,但我不确定我的头脑是验证是否适用于这些字段如果字段是只读的,那么确实不需要任何验证,因为您以编程方式将值放入字段中,并且应该在添加值之前以编程方式验证它。