java - 如何将字符串的嵌套 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。
解决方案
您基本上可以用值替换每个键
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());
}
查看此帖子以获取更多答案
推荐阅读
- javascript - 无法使用 ajax 将变量从 javascript 传输到 php
- laravel - 混合查询约束不支持 BelongsToMany - mongodb laravel
- firefox-addon - 有没有办法在我的网站的 Content-Security-Policy 中包含一个 firefox 扩展弹出窗口?
- python-3.x - 如何从 .har 文件重放服务器响应?
- applescript - 如何从 Applescript 启动特定版本的 Illustrator?
- amazon-web-services - 如何在 ECS(容器存储)上验证 AWS EBS(Beanstalk)?AccessDeniedException
- python - 将字符串中的字符拆分为列表,除非在 Python 3 中被多位整数包围
- c++ - 在两个文件之间共享静态全局变量
- sql - 将窗函数与比较运算符一起使用
- javascript - 要使用 Javascript 删除和替换的 HTML 元素