gpt4 book ai didi

java - JSR 303/约束 validator 上下文 : Parameterized Error Messages

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:54:45 26 4
gpt4 key购买 nike

如果我有一个 ConstraintValidatorContext 并且我正在使用 buildConstraintViolationWithTemplate(String messageTemplate) 构建一个 ConstraintViolationContextBuilder,是否有可能通过自定义参数值?

相应的属性文件看起来像这样:

Foobar.invalidValue.message=Invalid value. Valid values are {VALID_VALUES}

然后我想以编程方式设置 {VALID_VALUES} 的值。

你有什么想法吗?

最佳答案

您只能在消息模板中引用相关约束注释的属性,例如就像具有属性 minmax 的约束一样:

size must be between {min} and {max}

因此您可以将有效值指定为注释属性。

如果您使用 Hibernate Validator 作为 Bean Validation provider,您可以实现自定义 ResourceBundleLocator它返回包含您的值的键的包:

public class MyResourceBundleLocator implements ResourceBundleLocator {

public ResourceBundle getResourceBundle(Locale locale) {
//return a bundle with keys for your values, e.g. set dynamically
}
}

然后在获取 validator 时设置定位器:

Validator validator Validation.byProvider(HibernateValidator.class)
.configure()
.messageInterpolator(
new ResourceBundleMessageInterpolator(
new MyResourceBundleLocator() ) )
.buildValidatorFactory()
.getValidator();

或者,您可以自己格式化和准备消息并将其传递给 buildConstraintViolationWithTemplate()

关于java - JSR 303/约束 validator 上下文 : Parameterized Error Messages,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13623556/

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