所以,我很确定这只是因为我自己对Spring和Java中各种消息解析/插值的发生方式缺乏了解,我想要的是:
InternationalMessages.properties
BadParsingFormat={{0}} should fall betweeen {1} and {2}
pointTop=The top coordinate
pointLeft=The left coordinate
APIEndPoint.java
// Standard implementation and wiring of message source
@Autowired
MessageSource messageSource;
public void someMethod(String somethingToParse) {
String parsed;
try {
parsed = SomeKindOfParser.parse(somethingToParse);
}
catch(BadParsingFormatException exception) {
String error = messageSource.getMessage("BadParsingFormat",
new Object[]{
exception.getVariableName(),
exception.getLowerBound(),
exception.getUpperBound()
});
// Do something useful with this error message
}
}
在这个俗气的示例中,exception.getVariableName()
将返回pointTop
或pointLeft
。我想进一步解决/插入到特定的名称,但我似乎无法完成它。我知道我可以使用另一个messageSource调用并单独获取该bundle值,但如果我能避免这种情况,我会更喜欢它。
答案 0 :(得分:0)
无法想到除了你已经建议的任何其他方式 - 再次调用messageSource:
BadParsingFormat={0} should fall betweeen {1} and {2}
pointTop=The top coordinate
pointLeft=The left coordinate
使用代码
String error = messageSource.getMessage("BadParsingFormat",
new Object[]{
messageSource.getMessage(exception.getVariableName(),null, null),
exception.getLowerBound(),
exception.getUpperBound()
});