我们已经开始使用VelocityEngine,我们已经看到了一些有线行为。对于我们在速度模板中的每个数据,我们确保它不会为空,如果它为空,至少我们将它设置为空字符串(""),这样就不会发生数据错误。我们也有多年使用的sendEmail()方法,我们知道它工作正常。
然而,对于发送的每封电子邮件,我们开始收到空的电子邮件(根本没有内容)。所以我认为这与加载模板有关。这个代码块将经常与成千上万的用户一起调用。下面是我们用来初始化VE和设置所有数据的代码块。是否存在导致模板为空的错误?还是线程问题?不太确定。感谢您的帮助
StringWriter writer = new StringWriter();
VelocityEngine ve = new VelocityEngine();
ve.setProperty(RuntimeConstants.RESOURCE_LOADER, "classpath");
ve.setProperty("classpath.resource.loader.class", ClasspathResourceLoader.class.getName());
Template temp= ve.getTemplate("emailTemplate.xml");
/**
* Prepare context data
*/
VelocityContext context = new VelocityContext();
//Initializing all to empty
context.put("fullName", "");
context.put("cFName","");
context.put("cLName","");
context.put("cPhone", "");
context.put("cEmail", "");
context.put("emailType",0);
context.put("street","");
context.put("city","");
context.put("state","");
context.put("zip","");
context.put("hasCMessage", false);
context.put("numBed", "");
//Fill the context with the right data if the coming data is not null
context.put("fullName", (client.getFullName()!=null? client.getFullName() :"" ));
temp.merge(context, writer);