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ł
相关产品推荐
相关产品推荐

