Java 具有空内容的VelocityEngine模板
我们已经开始使用VelocityEngine,我们已经看到一些有线行为。对于velocity模板中的每个数据,我们确保它不会为null,如果为null,至少我们将其设置为空字符串,这样就不会发生数据错误。我们也有发送电子邮件的方法,我们已经使用多年了,我们知道它工作得很好 然而,每发送几封电子邮件,我们就开始收到没有内容的空电子邮件。所以我假设这与加载模板有关。这个代码块将被成千上万的用户频繁调用。下面是我们用来初始化VE和设置所有数据的代码块。是否存在导致模板为空的错误?还是线程问题?不太清楚。我感谢你的帮助Java 具有空内容的VelocityEngine模板,java,xml,multithreading,velocity,Java,Xml,Multithreading,Velocity,我们已经开始使用VelocityEngine,我们已经看到一些有线行为。对于velocity模板中的每个数据,我们确保它不会为null,如果为null,至少我们将其设置为空字符串,这样就不会发生数据错误。我们也有发送电子邮件的方法,我们已经使用多年了,我们知道它工作得很好 然而,每发送几封电子邮件,我们就开始收到没有内容的空电子邮件。所以我假设这与加载模板有关。这个代码块将被成千上万的用户频繁调用。下面是我们用来初始化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);
您的模板是什么样子的?您是否尝试过简单地打印渲染输出?删除其他步骤有助于确定问题的范围。@AndreM我可以将xml模板粘贴到此处。但我们认为这不是问题所在,因为例如,它适用于5封电子邮件,即使我们提供了类似的数据,第6封也将是空的。无论如何,我正在努力提供更多的细节。谢谢。好的,所以模板听起来不是问题,所以试着看看是否可以删除电子邮件组件以进行测试。还要查看是否是模板的特定参数导致了问题。@WowBow您找到了任何根本原因吗?