1
私は速度テンプレート、テンプレートとPOJOをテキストにマージするいくつかのメソッドを持っています。私はデバッガをチェックインし、すべてのデータがどこにでも正しく埋められています。私の問題は、速度は1つのフィールド(queueName)しか取得できないが、残りのフィールドは取得できないということです。何故ですか?Velocityはpojoからフィールドを取得できません
テンプレート:これは、マージ私のPOJO
@Data //lombok annotation generates getters, setters, hash and equals
@Builder //lombok annotation generates builder
@NoArgsConstructor
@AllArgsConstructor
public class MonitoredQueue {
private Integer id;
private String queueName;
private Integer currentMessageCount;
private Integer previousMessageCount;
private LocalDateTime previousCheckDate;
private LocalDateTime previousEmailSentDate;
private String createdBy;
private LocalDateTime creationDate;
private String modifiedBy;
private LocalDateTime modificationDate;
}
方法
public String mergeTemplateIntoEmailText(List<MonitoredQueue> monitoredQueues, String environment) {
velocityEngine.init();
Template mailTemplate = velocityEngine.getTemplate(EMAIL_TEMPLATE);
VelocityContext velocityContext = new VelocityContext();
velocityContext.put(ENVIRONMENT, environment);
velocityContext.put(MONITORED_QUEUE, monitoredQueues);
StringWriter writer = new StringWriter();
mailTemplate.merge(velocityContext, writer);
return writer.toString();
}
であり、これは結果である
<html>
<body>
<h3>Environment: ${environment}</h3>
<div>
#if ($monitoredQueues.size() > 0)
<table>
#foreach($monitoredQueue in $monitoredQueues)
#set($queueName = ${monitoredQueue.QueueName})
#set($crMsgCount = ${monitoredQueue.CurrentMessagesCount})
#set($prMsgCount = ${monitoredQueue.PreviousMessagesCount})
#set($prCheckTime = ${monitoredQueue.PreviousCheckTime})
#set($prEmailTime = ${monitoredQueue.PreviousEmailSentTime})
<tr>
<td>
<table>
<tr>
<td>
<p>Queue name: ${queueName}</p>
</td>
</tr>
<tr>
<td>
<p>Current messages count: ${crMsgCount}</p>
</td>
</tr>
<tr>
<td>
<p>Previous messages count: $!{prMsgCount}</p>
</td>
</tr>
<tr>
<td>
<p>Previous check time: $!{prCheckTime}</p>
</td>
</tr>
<tr>
<td>
<p>Previous email sent time: $!{prEmailTime}</p>
</td>
</tr>
</table>
</td>
</tr>
#end
</table>
#end
</div>
</body>
</html>
:
Environment: test
Queue name: Janton.Oksa.V1:RessuItemCreatedOrUpdated Current messages count: $crMsgCount Previous messages count: $prMsgCount Previous check time: $prCheckTime Previous email sent time: $prEmailTime
私はテンプレートを変更することで、私の問題を解決しました。 Velocityは何とかHTMLツリーの深いレベルのどこかの緩やかなコンテキストです。理由を知らない。
ロンボクを使用しています。データアノテーションはパブリックゲッターを生成します。 – Piotrowy
あなたはどこであなたの質問に言及しましたか?私はダウンボートに値するような気がしません。 –
Javaツールについて話したいなら、lombokを知っておくべきです。それはpojoクラスで言及されています。私はこの投票を元に戻すことができますが、次回はそれを覚えておく必要があります。 – Piotrowy