当前位置: 首页 > 知识库问答 >
问题:

用Apache Camel/ActiveMQ处理Velocity电子邮件模板中的非字符串

公冶弘壮
2023-03-14

我在VTL文档中看到了如何编写一个模板,可以以这种方式处理列表…如果我可以将这样的列表传递给模板的话。但我怎么去那里?我尝试将Java ArrayList(而不是String)放入映射中,但这似乎不起作用。当我尝试访问$headers.list时,它只给我一个文字字符串“$headers.list”。那么正确的做法是什么呢?

共有1个答案

霍永年
2023-03-14

使用org.apache.velocity.velocityContext类,我们可以访问模板中的列表,如下所示

Message message = exchange.getIn();
List<Name> nameList = new ArrayList<Name>()
Name testName = new Name();
testName.setFirstName("testFirstName");
testName.setLastName("testLastName");
nameList.add(testName)

Map<String, Object> model = new HashMap<>();
model.put("nameList", nameList);

VelocityContext velocityContext = new VelocityContext(model);
message.setHeader("camelVelocityContext", velocityContext);

在模板文件中,我们应该使用org.apache.velocity.velocityContext的internalGet方法来访问列表,如下所示

#if(${headers.camelVelocityContext.internalGet("nameList").size()}!=0)
  <table>
    <thead>
        <tr>
            <th class="td-border">FirstName</th>
            <th class="td-border">LastName</th>
        </tr>
    </thead>
    <tbody>
        #foreach($entry in ${headers.camelVelocityContext.internalGet("nameList")} )
        <tr>
            <td class="td-border">$entry.firstName</td>
            <td class="td-border">$entry.lastName</td>
        </tr>
        #end
    </tbody>
  </table>
#end

命名POJO类

public class Name {

private String firstName;

private String lastName;

public String getFirstName() {
    return firstName;
}

public void setFirstName(String firstName) {
    this.firstName = firstName;
}

public String getLastName() {
    return lastName;
}

public void setLastName(String lastName) {
    this.lastName = lastName;
}
 类似资料:
  • 问题内容: 如何使用诸如Velocity或FreeMarker之类的模板引擎构造电子邮件正文来实现i18n? 通常,人们倾向于创建如下模板: 并创建具有以下属性的资源包: 这就产生了一个基本的问题:如果我的文件很大,包含很多行文本,那么在单独的资源包()文件中翻译和管理每个文件就变得很麻烦。 我想做的是,为每种语言创建一个单独的文件,类似,然后以某种方式告诉Velocity / Spring根据输

  • 发送电子邮件时,页脚中有下面的标准消息。 此电子邮件是使用CakePHP框架发送的,http://cakephp.org. 它似乎使用了这个: 我的控制器里有这个。 创建了以下视图: /应用程序/查看/电子邮件/文本/梦想。ctp /应用程序/视图/布局/电子邮件/文本/梦想。ctp 是否有任何其他设置我错过了cakephp使用我的布局? *注:如果我重新命名我的梦想。ctp默认。ctp它使用那个

  • 我有一个spring mvc应用程序,我试图将日期LocalDate呈现为字符串,对于普通视图,它可以工作,但对于电子邮件,它不工作,并抛出以下错误: 原因:org.springframework.core.convert.converterNotFoundException:找不到能够从[java.time.localdate]类型转换为[java.lang.string]类型的转换器 代码:

  • 问题内容: 我想使用Django模板发送HTML电子邮件: 我找不到任何有关的信息,而django-mailer仅发送HTML模板,而没有动态数据。 如何使用Django的模板引擎生成电子邮件? 问题答案: 从docs,要发送HTML电子邮件,你想使用其他内容类型,如下所示: 你可能需要两个用于电子邮件的模板-一个看起来像这样的纯文本模板,存储在你的模板目录下: 还有一个HTMLy,存放在以下位置

  • 我正在尝试使用AmazonSDK发送电子邮件。NET和SES。我有一封由特殊信件组成的电子邮件,例如: ęxąmplę@źćż。通用域名格式 对于域部分,我阅读了关于Punycode的文章,这很好用。但对于地址的本地部分,我似乎找不到解决方案:我尝试对整个电子邮件使用RFC 2047编码,但SES返回“missing final@domain”错误,因此我尝试只对本地部分进行编码,因此电子邮件将是