Java ResourceBundleMessageInterpolator能否在验证程序的上下文之外使用?

Java ResourceBundleMessageInterpolator能否在验证程序的上下文之外使用?,java,spring,validation,Java,Spring,Validation,我已经在谷歌上搜索并检查了关于这个问题的Javadocs,但是我没有发现太多 我试图在一个validationMessages.properties文件中使用一些用户验证消息,这些消息通常在实际的JSR-303验证器中使用(它们在正常的验证周期中工作正常) 具体而言,我试图使用以下信息: javax.validation.constraints.Size.message=This field has a maximum length of {max}. 通常我会使用典型的ResourceBun

我已经在谷歌上搜索并检查了关于这个问题的Javadocs,但是我没有发现太多

我试图在一个
validationMessages.properties
文件中使用一些用户验证消息,这些消息通常在实际的JSR-303验证器中使用(它们在正常的验证周期中工作正常)

具体而言,我试图使用以下信息:

javax.validation.constraints.Size.message=This field has a maximum length of {max}.
通常我会使用典型的ResourceBundleMessageSourcebean:

@Autowired
private ResourceBundleMessageSource messageSource;

result.append(messageSource.getMessage("javax.validation.constraints.Size.message", new Object[]{maxLength}, "", null));
但是在这种情况下,由于
{max}
参数,我得到以下结果:

java.lang.IllegalArgumentException: can't parse argument number: max
java.text.MessageFormat.makeFormat(MessageFormat.java:1420)
java.text.MessageFormat.applyPattern(MessageFormat.java:479)
java.text.MessageFormat.<init>(MessageFormat.java:381)
org.springframework.context.support.MessageSourceSupport.createMessageFormat(MessageSourceSupport.java:159)
org.springframework.context.support.ResourceBundleMessageSource.getMessageFormat(ResourceBundleMessageSource.java:371)
org.springframework.context.support.ResourceBundleMessageSource.resolveCode(ResourceBundleMessageSource.java:257)
org.springframework.context.support.AbstractMessageSource.getMessageInternal(AbstractMessageSource.java:205)
org.springframework.context.support.AbstractMessageSource.getMessage(AbstractMessageSource.java:113)
java.lang.IllegalArgumentException:无法分析参数编号:max
java.text.MessageFormat.makeFormat(MessageFormat.java:1420)
java.text.MessageFormat.applyPattern(MessageFormat.java:479)
MessageFormat.(MessageFormat.java:381)
org.springframework.context.support.MessageSourceSupport.createMessageFormat(MessageSourceSupport.java:159)
org.springframework.context.support.ResourceBundleMessageSource.getMessageFormat(ResourceBundleMessageSource.java:371)
org.springframework.context.support.ResourceBundleMessageSource.resolveCode(ResourceBundleMessageSource.java:257)
org.springframework.context.support.AbstractMessageSource.getMessageInternal(AbstractMessageSource.java:205)
org.springframework.context.support.AbstractMessageSource.getMessage(AbstractMessageSource.java:113)
验证器消息有一个
{max}
,其中正常参数化消息将有一个{1}

我很快就发现,对于验证消息,我需要通过验证消息处理来运行它,而不是“常规”的Spring消息处理。然而,我不知道该怎么做。
ResourceBundleMessageInterpolator
仅包含一个
interpolate(字符串消息、上下文上下文)
函数,没有可直接用于构建消息的功能。我找不到任何关于如何构建上下文对象的文档或示例,所以我有点卡住了。有谁能告诉我如何在整个验证过程之外以独立的方式执行此操作(插入验证器消息)