如何在GeneXus中自定义「外键未找到」错误提示信息
自定义外键缺失错误提示的参数(替换属性名为描述)
核心问题原因
系统自带的外键必填验证会优先于你编写的自定义Error代码执行,所以你的提示会被默认提示覆盖。解决思路是先禁用自动验证,再手动实现带属性描述的提示,或者直接修改系统验证的参数映射。
方案1:禁用自动验证+自定义提示(推荐)
关闭外键的自动必填验证
打开Transaction中OTESCLI属性的配置面板,找到「约束(Constraints)」或「验证(Validation)」区域,取消勾选「必填(Required)」或「自动外键验证(Automatic Foreign Key Validation)」选项(具体选项名称依GeneXus版本略有不同)。添加自定义验证逻辑
在Transaction的「Before Save」事件中编写验证代码,直接使用属性描述作为提示内容:If OTESCLI.IsEmpty() // 直接写固定提示 Error('Customer Required') // 或者用字典标签+属性描述(适配多语言) // Error(Translate('%1 Required', &OTESCLI.Description)) EndIf如果用字典标签的方式,需要先在字典中定义
%1 Required条目,这样能自动适配多语言场景,参数&OTESCLI.Description会自动替换为属性的描述文本(Cliente/Customer)。
方案2:修改系统验证的参数映射
如果不想禁用自动验证,可直接修改系统外键验证的错误提示参数:
- 在Transaction的「验证规则(Validation Rules)」列表中,找到对应
OTESCLI外键的必填验证规则。 - 编辑该规则的错误提示,将原本默认传入的「属性名」参数替换为「属性描述」。具体操作是在提示模板中,把引用属性名的变量换成
&OTESCLI.Description,这样系统触发提示时就会显示描述而非属性名。
内容的提问来源于stack exchange,提问作者Nicola
相关产品推荐
相关产品推荐

