1
속도 템플릿, 템플릿과 POJO를 텍스트로 병합하는 방법이 있습니다. 나는 디버거를 체크인했고 모든 데이터는 모든 곳에서 적절히 채워져있다. 내 문제는 속도가 하나의 필드 (queueName) 만 얻을 수 있지만 나머지는 그렇지 않다는 것입니다. 왜 그런가요?속도가 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
템플릿을 변경하여 문제를 해결했습니다. 어떻게 든 느슨한 맥락 어딘가에 깊이있는 수준의 HTML 트리. 이유를 모르겠다.
롬복을 사용하고 있습니다. 데이터 주석은 public getter를 생성합니다. – Piotrowy
어디에서 귀하의 질문에 언급 했습니까?! 나는 downvote를받을 가치가있는 것처럼 느껴지지 않는다. –
Java 도구에 관해 이야기하고 싶다면 lombok을 알아야합니다. 그것은 pojo 클래스에서 언급된다. 나는이 투표를 취소 할 수 있지만 다음에 그것을 기억해야합니다. – Piotrowy