我有各种代表电子邮件的 Velocity 模板文件。我正在寻找一种优雅的方式来允许模板文件输出消息的主题行以及内容。我考虑了几个选择:
使输出的第一行类似于“Subject: Bla”,并在 Java 中将其删除。我拒绝了这种方法,因为从 Java 执行花哨的字符串操作正是我首先尝试使用 Velocity 解决的问题。
将一个可设置对象放入映射中,以便 Velocity 宏中的某些代码调用 setter 。优点:非常简单。缺点:我不喜欢从 Velocity 设置外部对象的想法,即使只是作为一种输出形式。不过,这可能是一种无理的厌恶。
创建一些自定义 Velocity 命令,例如#setSubjectLine。优点:更优雅。缺点:将作为有效命令应用于我的所有模板,无论它们是否是电子邮件。
主题行和电子邮件的其余部分有单独的模板文件。优点:根本没有什么特殊技巧!缺点:并非所有电子邮件逻辑都位于同一个地方。
一些我不知道的很酷的速度技巧。
???
那我该怎么办呢?你有5个还是6个的建议吗?我应该选择 1、2、3 或 4 的原因是什么?
最佳答案
2) Throw a settable object into the mapping for some code in the Velocity macro to call a setter on. Pros: Pretty simple. Cons: I dislike the idea of setting external objects from Velocity, even as just a form of output. It might be an unreasonable dislike, though.
这是我的方法,尽管我一开始也有类似的疑虑,但我对此很满意。我什至以这种方式设置字符编码和其他属性。这会将模板的其余部分保留为消息正文。再次,我很高兴。
#set ( $myAtts.encoding = "utf-8" )
#set ( $myAtts.from = "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="10636465507e7f67787562753e7e7564" rel="noreferrer noopener nofollow">[email protected]</a>" )
关于java - 额外速度引擎输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1085633/