首页 > 解决方案 > 如何将字符串的嵌套 PlaceHolders 映射到 Java 中的 Pojo 类

问题描述

我正在从文件中读取数据,我需要用 java Bean 值替换占位符。

我已经尝试StrSubstitutor映射值,但没有奏效,可能我的方法不正确,占位符的声明是正确的,请建议我正确的方法

Class Test{
    String firstName;
    Request request;
}
class Request {
    String requestNumber;
}
setValues(){
    String template ="Dear ${test.firstname},Your Request number is ${test.request.requestNumber}.";
    Test test= test;
    Map<String, String> valuesMap = new HashMap<>();
    valuesMap.put("test.firstname",test.getFirstName());
    valuesMap.put("test.request.requestNumber",test.getRequest().getRequestNumber());
    StrSubstitutor StrSubstitutor = new StrSubstitutor(valuesMap);
    String mailContent = StrSubstitutor.replace(template );
}

输出应该是

亲爱的名字,您的请求编号是 1234567。

标签: java

解决方案


您基本上可以用值替换每个键

String template ="Dear ${test.firstname},Your Request number is ${test.request.requestNumber}.";
Test test = ...;

Map<String, String> valuesMap = new HashMap<>();
valuesMap.put("test.firstname",test.getFirstName());
valuesMap.put("test.request.requestNumber",test.getRequest().getRequestNumber());

for (Map.Entry<String, String> entry : map.entrySet()) {
    template = template.replace("${" + entry.getKey() + "}", entry.getValue());
}

查看此帖子以获取更多答案


推荐阅读