我认为@TinkerTenorSoftwareGuy关于模板库的建议是最好的选择。有很多,我用
Freemarker
一点。
You did ${action} at ${date} in ${city} ${state} ${zip}. Yours truly, ${firstName} ${lastName}.
以及包含数据的模型(java类):
class MyTemplate extends StringTemplate {
public MyTemplate(String action, Date date, /* etc */ ) { /* set the model state */ }
public String getTemplateFileLocation() { /* point to the template file */ }
public String process() { /* process the template and return the string */ }
public String getAction() { /* return the action as a string */ }
public String getDate() { /* return the formatted date as a string, i.e. */
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
return df.format(date);
}
public String getCity() { /* return the city as a string */ }
public String getState() { /* return the state as a string */ }
public String getZip() { /* return the zip code as a string */ }
public String getFirstName() { /* return the first name as a string */ }
public String getLastName() { /* return the last name as a string */ }
}
然后在代码中可以实例化模板并对其进行处理。处理模板将替换
${firstName}
getFirstName()
在模型中(等等,对于每个变量):
StringTemplate template = new MyTemplate(action, date, city, state, zip, firstName, lastName);
String letter = template.process();
letter
包含用模型中的值填充的模板。
有很多不同的模板库,但这是基本思想。