You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HCL Domino XPages字段自定义验证问题:替换用户与当前用户重复验证无提示

HCL Domino XPages 字段重复验证解决方案

可以用validateExpression实现这个验证,你遇到的提交被阻止但无提示问题,是因为验证器的关键配置没到位。以下是正确的实现步骤:

一、validateExpression 正确配置

  • 必须设置提示消息:给validateExpression添加message属性,比如message="替换用户不能与当前用户相同",这是前端显示验证提示的核心,缺失的话只会触发验证阻止提交,但不会弹出提示。
  • 表达式要准确对比值:确保两个字段的用户值格式一致(比如都是短名或完整CN名),表达式示例:
    #{javascript:currentDocument.getItemValueString("User") != currentDocument.getItemValueString("Replacement")}
    
  • 开启客户端验证:将validateExpression的clientSide属性设为true,否则仅会触发服务器端验证,不会在前端弹出提示。

二、若validateExpression仍有问题,用customValidator替代

如果validateExpression还是不符合预期,可以用customValidator实现,需要同时配置服务器端和客户端逻辑:

服务器端脚本

var user = currentDocument.getItemValueString("User");
var replacement = currentDocument.getItemValueString("Replacement");
if (user === replacement) {
    throw new javax.faces.validator.ValidatorException(
        new javax.faces.application.FacesMessage("替换用户不能与当前用户相同")
    );
}

客户端脚本(开启客户端验证时需要)

var userField = XSP.getElementById("#{id:User}");
var userValue = userField ? userField.value : "";
var replacementValue = this.getValue();
if (userValue === replacementValue) {
    return "替换用户不能与当前用户相同";
}

注意:要确保#{id:User}能正确引用到User字段的客户端ID,避免拿不到值导致验证失效。

额外注意点

User字段默认值为当前用户时,要确保页面加载完成后,该字段的值已正确渲染到客户端,否则客户端验证可能因拿不到正确值出现判断错误。

内容的提问来源于stack exchange,提问作者Michał

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 23:37:36