Freemarker テンプレートが異なるマシンで異なる日付形式を生成するという問題があります。
私の Freemarker マクロは次のようになります。
<#macro renderTextEntry textEntry>
<div id="text_entry_${textEntry.id}" class="text_entry">
<span id="text_entry_${textEntry.id}_date" class="text_entry_date">${textEntry.time?datetime}</span>:
<div id="text_entry_${textEntry.id}_content" class="text_entry_content"><#noescape>${textEntry.text}</#noescape></div>
<button class="edit_text_entry">Edit</button>
<a class="delete_text_entry" href="/delete-text-entry?id=${textEntry.id}"><img
src="images/delete.png" alt="delete text entry"/></a>
</div>
</#macro>
結果の単体テストがあり、予想される結果は次のとおりです。
<div id="text_entry_5" class="text_entry">
<span id="text_entry_5_date" class="text_entry_date">Jan 2, 1970 11:17:36 AM</span>:
<div id="text_entry_5_content" class="text_entry_content">some text</div>
<button class="edit_text_entry">Edit</button>
<a class="delete_text_entry" href="/delete-text-entry?id=5">
<img src="images/delete.png" alt="delete text entry"/>
</a>
</div>
1 台 1 台のマシンで、このテストに合格します。別の方法では、失敗します。唯一の違いは、日付が次のように出力されることです。
02-Jan-1970 11:17:36
TextEntry.getDate() は、java.util.Date オブジェクトを返します。
どちらのマシンも、OSX 10.7.5 および Java 1.7.0_10-b18 を実行する MacbookPro です。デフォルトの DateFormat に影響を与える、設定した環境変数を認識していません-単に実行しています
System.out.println(new Date());
両方のマシンで同じ出力を生成します。ここで何が起こっているのかわかりません - どんな助けでも大歓迎です!
注:必要な日付形式を明示的に宣言することで問題を解決しました-関連するFreemarkerスニペットは現在
${textEntry.time?string("MMM d, yyyy HH:mm:ss a")}
ただし、ここで何が起こっているのかを理解しておくとよいでしょう。