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

修改字段校验逻辑后输入有效destinationField仍报错问题咨询

故障原因与修复方案

根因定位

  • 变量生命周期过长:你将invalidDestination HashSet定义在校验逻辑外层,属于长生命周期变量,之前输入无效值时存入的记录不会自动清空,后续哪怕输入全为有效值,集合中仍残留旧的无效数据,会持续触发报错逻辑。
  • 逻辑与原始实现不一致:原始代码仅校验configTypeBuilder.destinationField单个字段,修改后的代码遍历的是destinationFieldList,如果该列表没有和最新输入同步更新,也会残留历史无效值导致误报。

修复方案

将HashSet的定义移到校验逻辑内部,每次执行校验都创建新的空集合,避免历史数据残留;同时确认遍历的列表是当前最新的输入值集合。
修复后代码如下:

if (!isNullOrEmpty(configTypeBuilder.destinationField, RULE_CRITERIA_CONFIG_TYPE_BUILDER_DESTINATION_FIELD_PATH)) {
    // 每次校验都初始化新的空集合,清除旧数据影响
    val invalidDestination = hashSetOf<String>()
    // 请确认此处destinationFieldList为当前最新的输入值集合,若仅需校验单个字段可调整对应逻辑
    for (destinationField in destinationFieldList) {
        if (!ruleAttributes.contains(destinationField)) {
            invalidDestination.add(destinationField)
        }
    }
    if (invalidDestination.isNotEmpty()) {
        addValidationError(
            "$RULE_CRITERIA_CONFIG_TYPE_BUILDER_DESTINATION_FIELD_PATH $NOT_EXIST_CONSTRAINT",
            DESTINATION,
            "$ADD_TAX_ENGINE_ATTRIBUTE_FIELDS $invalidDestination"
        )
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 11:36:03