gpt4 book ai didi

ajv - 我如何覆盖 JSON 形式的默认错误消息文本

转载 作者:行者123 更新时间:2023-12-04 08:25:11 27 4
gpt4 key购买 nike

TLDR:我需要自定义 JSON 表单提供的默认错误消息。例如,如果字段是 required然后 JSON 形式给出类似 is a required property 的错误,我希望它返回错误消息文本,如 Invalid input....我创建了一个 JSON form与架构类似

    {
type: 'object',
properties: {
name: {
type: 'string',
minLength: 3,
},
},
required: [
'name',
],
errorMessage: {
required: 'INVALID INPUT. This is a required field',
},
};
现在我已经使用这个架构和一个 UI 架构来创建一个 JSON 表单
const ajv = createAjv();
require('ajv-keywords')(ajv);
require('ajv-errors')(ajv);
<JsonForms
schema={schema}
uischema={uischema}
data={data}
renderers={CustomRenderers}
cells={vanillaCells}
onChange={onChange}
ajv={ajv}
/>
上面的 JSON 表单呈现一个 UI 表单,当字段为空时会给出标准错误消息,如 is a required property ,现在我需要用我自己的自定义消息覆盖,为此目的 https://github.com/ajv-validator/ajv-errors发现有用并添加了属性 errorMessage在我的架构中,使用 required键有我的自定义消息,我还添加了 require('ajv-errors')(ajv);因为需要,但我仍然收到默认错误消息,而不是我在 errorMessage 中覆盖的错误消息.
我在这里错过了什么吗?或者我可以有其他方法来覆盖默认消息。还有 required我会有很多验证,比如 minLength , maxLength等我可能必须覆盖其默认消息。
此外,我期待架构中有很多其他属性,因此添加 errorMessage在每个属性中可能不是很有效,但如果这是我必须采用的唯一解决方案:)

最佳答案

我继续添加我自己的自定义关键字

export default (ajv) => {
ajv.addKeyword('customErrorMessages', {
inline: generate_customErrorMessages,
statements: true,
valid: true,
errors: 'full',
});
return ajv;
};

const generate_customErrorMessages = () => {
var out = ' ';
out += "vErrors = vErrors.map((v) => {"
out += "if (v.keyword === 'required') {v.message = 'This field cannot be left blank.';} ";
out += "else if (v.keyword === 'minLength') {v.message = `This field cannot be shorter than ${v.params?.limit} characters.`;} ";
out += "else if (v.keyword === 'maxLength') {v.message = `This field cannot be longer than ${v.params?.limit} characters.`;} ";
out += "else if (v.keyword === 'maximum') {v.message = `This field should be ${v.params?.comparison} ${v.params?.limit}`;} ";
out += "else if (v.keyword === 'minimum') {v.message = `This field should be ${v.params?.comparison} ${v.params?.limit}`;}";
out += "return v;});"
return out;
};
我还需要在我的模式中添加关键字作为 "customErrorMessages": true .有了这个,我的消息将成为代码的一部分而不是架构,我还可以为不同的语言添加不同的消息,而不必依赖于架构。

关于ajv - 我如何覆盖 JSON 形式的默认错误消息文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65303161/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com