【问题标题】:How to pass parameters using spring message PropertyPlaceholderConfigurer?如何使用spring消息PropertyPlaceholderConfigurer传递参数?
【发布时间】:2018-08-17 19:32:42
【问题描述】:

如果属性消息是硬编码的,则编写的代码可以正常工作。相反,我想将动态数据作为参数传递并获取消息。 我开发的代码是:

public class SpringPropertiesUtil extends PropertyPlaceholderConfigurer {

private static Map<String, String> propertiesMap;
// Default as in PropertyPlaceholderConfigurer
private int springSystemPropertiesMode = SYSTEM_PROPERTIES_MODE_FALLBACK; //Check system properties if not resolvable in the specified properties.

static final Logger logger = LogManager.getLogger(SpringPropertiesUtil.class);

@Override
public void setSystemPropertiesMode(int systemPropertiesMode) {
    super.setSystemPropertiesMode(systemPropertiesMode);
    springSystemPropertiesMode = systemPropertiesMode;
}

@Override
protected void processProperties(ConfigurableListableBeanFactory beanFactory, Properties props) throws BeansException {
    super.processProperties(beanFactory, props);

    propertiesMap = new HashMap<String, String>();
    for (Object key : props.keySet()) {
        String keyStr = key.toString();
        String valueStr = resolvePlaceholder(keyStr, props, springSystemPropertiesMode);
        propertiesMap.put(keyStr, valueStr);
    }
}

public static String getProperty(String name) {
    return propertiesMap.get(name).toString();
}

消息属性文件包括:

myProperty={0} how are you

现在,我想传递名称来代替 {0}。但我做不到。如果要定义任何方法,请告诉我。

【问题讨论】:

    标签: java spring spring-mvc properties-file


    【解决方案1】:

    您可以autowire消息源并使用getMessage方法,例如在控制器中:

    ...
    
    @Autowired
    private MessageSource messageSource;
    
    ...
    
    final String[] params = new String[]{"Obama"};
    final String msg = messageSource.getMessage("myProperty", params, LocaleContextHolder.getLocale());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-10
      • 1970-01-01
      • 2018-12-12
      • 2018-10-27
      • 1970-01-01
      • 1970-01-01
      • 2011-04-23
      相关资源
      最近更新 更多