【问题标题】:Dynamic expression variables for validation messages in Spring MessageSourceSpring MessageSource 中验证消息的动态表达式变量
【发布时间】:2017-11-17 15:48:52
【问题描述】:

我正在使用 Hibernate ValidatorMessageSource 来本地化违规消息。

class FooValidator implements ConstraintValidator<ValidFoo, Foo>

    @Override
    public void initialize(ValidTransitions constraintAnnotation) {
    }

    @Override
    public boolean isValid(Foo foo, ConstraintValidatorContext context) {

        //some calculations

        String result = calculations.toString();

        HibernateConstraintValidatorContext hibernateContext = context.unwrap(HibernateConstraintValidatorContext.class);
        hibernateContext.disableDefaultConstraintViolation();
        hibernateContext.addExpressionVariable("invalidResult", result)
                .buildConstraintViolationWithTemplate("Invalid field: ${invalidResult}")
                .addConstraintViolation();
        return false;
    }
}

我想在messages.properties 有这样的东西:

ValidFoo.foo=Localized invalid field message, field: ${invalidResult}

但我找不到将动态参数从我的FooValidator 注入到消息属性的方法。

【问题讨论】:

  • 你试过自动装配 MessageSource 类并做 Message.getMessage()。
  • @pvpkiran 当然。我的本地化工作一般,但我对表达式变量的这种情况有点困惑

标签: java spring hibernate validation


【解决方案1】:

命名参数和表达式变量只能由 Hibernate 解析。

Spring 使用 MessageFormat。

有关详细信息,请参阅 AbstractMessageSource.getMessageInternal。

【讨论】:

  • 这是作为答案发布的,但它不会尝试回答问题。它可能应该是一个评论。一旦获得足够的声望,您就可以在网站上留下 cmets。
  • @rosário-pereira-fernandes 对于盲人,请在前两行回答
猜你喜欢
  • 2018-09-05
  • 1970-01-01
  • 1970-01-01
  • 2016-01-01
  • 1970-01-01
  • 2013-05-11
  • 1970-01-01
  • 2017-09-26
  • 2012-06-23
相关资源
最近更新 更多