for (int i=0; i { Customer customer = (Customer)customers.get(i);
StringBuffer message = new StringBuffer(); message.append ("尊敬的先生/女士: "); message.append (customer.getCustName()); message.append ("/n"); message.append ("/n"); message.append ("您的帐户余额是 "); message.append (customer.getAccountTotal()); message.append ("/n"); message.append ("/n"); message.append ("致礼!"); message.append ("/n"); message.append ("某某装饰品公司");
// 发送email mm.sendMail (customer.getFirstName(), customer.getEmail(), "Account", message.toString()); } |
static public final String STR_HELLO="尊敬的先生/女士: "; static public final String STR_MESSAGE="您的帐户余额是 "; static public final String STR_BEY="致礼!/n某某装饰品公司"; |
for (int i=0; i<customers.size(); i++) { Customer customer = (Customer)customers.get(i);
// 创建一个环境,并加入所有的对象 VelocityContext context = new VelocityContext(); context.put ("CustName",customer.getCustName()); context.put ("total", new Double (customer.getAccountTotal())); context.put ("customer", customer );
// 解析模板,生成结果字符串 StringWriter message = new StringWriter(); template.merge(context, message);
// 发送email mm.sendMail (customer.getFirstName(), customer.getEmail(), "Account", message.toString()); } |
尊敬的先生/女士: $CustName
您的帐户余额是 $total 致礼! 某某装饰品公司 |
尊敬的先生/女士: $customer.CustName
您的帐户余额是 $customer.AccountTotal 致礼! 某某装饰品公司 |
int month = (new GregorianCalendar()).get(Calendar.MONTH); // 把month值加1,因为它从0开始计算 context.put ("month", new Integer(month+1) ); |
尊敬的先生/女士: $customer.CustName
您的帐户余额是 $customer.AccountTotal 致礼! 某某装饰品公司 #if ($month == 12) 祝您和您的家人圣诞节快乐! #end |
尊敬的先生/女士: $customer.CustName
#foreach ($transaction in $customer.Transactions) $transaction.Description $transaction.Amount #end 您的帐户余额是 $customer.AccountTotal 致礼! 某某装饰品公司 |
// 装入模板 Template template = Velocity.getTemplate("html.vm");
// 创建环境 VelocityContext context = new VelocityContext(); context.put ("customers",Customer.getCustomers());
// 解析模板,输出应答 ServletOutputStream output = response.getOutputStream(); Writer writer = new OutputStreamWriter (output); template.merge(context, writer); writer.flush(); |
<html> <body> <h1>客户报告</h1> #foreach ($customer in $customers) <h2>$customer.CustName<h2>
<table> #foreach ($transaction in $customer.Transactions) <tr> <td width="200"> $transaction.Date </td> <td width="150"> $transaction.Description </td> <td width="100"> $transaction.Amount </td> </tr> #end </tr> <td></td> <td></td> <td><b>$customer.AccountTotal</b></td> <tr> </table>
#end </body> </html> |
Properties props = new Properties(); props.setProperty( "file.resource.loader.cache", "true" ); props.setProperty( "file.resource.loader.modificationCheckInterval", "3600" ); Velocity.init (props); |
相关推荐
"JavaMail操作的总结.txt"和"JavaMail.txt"可能会更深入地讨论JavaMail的使用技巧和常见问题,而"用Java程序生成文本的捷径.TXT"可能是关于如何在Java中生成文本内容以填充邮件的说明,"为什么要自己写底层涵式.txt...
ANTLR可以接受语法语言描述并生成能够识别用该语言编写文本的程序。其目标是使构建AST(Abstract Syntax Tree,抽象语法树)以及生成输出的过程自动化。 ANTLR支持生成用Java、C++、C#编写的识别器,未来还将支持...
例如,List在Groovy中可以像Python一样使用负索引,Range则可以通过简单的范围表达式生成序列。这些集合类型在Groovy中都是对象,可以直接使用操作符进行操作,使代码更加直观易懂。 7. Groovy闭包的使用 闭包是...
【标题】"c3-java-tdd-gradle:第三个作业" 涉及的主要知识点是Java编程中的Test-Driven Development(TDD)方法,以及如何使用Gradle构建工具和JUnit进行单元测试。在这个作业中,你将学习如何利用现代开发环境...
1. 自然语言处理(NLP):是人工智能的一个分支,用于理解和生成人类语言,答题器中的智能匹配就依赖于NLP技术。 2. 机器学习(Machine Learning):让计算机通过学习数据而改进其性能,答题器利用机器学习算法提升...
第Ⅰ部分 使 用 Eclipse 第1章 引言 3 1.1 Eclipse作为应用程序开发 工具的宿主...... 4 1.2 不仅仅是工具的宿主,Eclipse 还作为客户端应用程序的 宿主...... 5 1.3 什么是Eclipse?...... 6 1.3.1 工具与应用...
第Ⅰ部分 使 用 Eclipse 第1章 引言 3 1.1 Eclipse作为应用程序开发 工具的宿主...... 4 1.2 不仅仅是工具的宿主,Eclipse 还作为客户端应用程序的 宿主...... 5 1.3 什么是Eclipse?...... 6 1.3.1 ...
第Ⅰ部分 使 用 Eclipse 第1章 引言 3 1.1 Eclipse作为应用程序开发 工具的宿主...... 4 1.2 不仅仅是工具的宿主,Eclipse 还作为客户端应用程序的 宿主...... 5 1.3 什么是Eclipse?...... 6 1.3.1 ...
4. **静态网站**:相比于动态网站,静态网站不依赖服务器端的编程语言(如PHP、Java、ASP.NET等)生成页面,加载速度更快,维护成本更低,但功能相对有限。 5. **网站模板**:模板为快速构建网站提供了一种捷径,...