Alfresco に詳しい人向けの質問かもしれませんが、少し具体的です。
作成時にサイトにカスタム アスペクトを追加しましたが、日付型のプロパティを保持しています。
<type>d:date</type>
現在、この日付を表示するようにsite.lib.ftlファイルを拡張しています。
"startdate": "<#if site.node.hasAspect("my:customAspect")>${siteNode.properties["my:customAspectDate"]?string("yyyy-MM-dd")}</#if>",
マクロ自体で site.node にアクセスできなかったため、マクロのパラメーター リストを拡張しました。
<#macro siteJSONManagers site siteNode roles>
そのため、 site.get.json.ftlとperson.sites.get.json.ftlから呼び出すことができます:
<@siteLib.siteJSON site=site siteNode=siteNode />
ここで、site.get.js のために、javascript で sitenode を準備します。
model.siteNode = site.node; // or the same with site.getNode;
私の日付は正しく解析されています。ただし、 person.sites.get.json.ftl からマクロを呼び出す場合、 javascript コントローラーで site.node を準備できないため、代わりに freemarker で (直接呼び出して) 実行します。
<@siteLib.siteJSONManagers site=site siteNode=site.node roles=roles/>
このフォームを使用すると、次の例外が発生します。
"09090011 Wrapped Exception (with status template): 09090096 Error during processing of the template 'Expected method. siteNode.properties[\"my:customAspectDate\"]?string evaluated instead to freemarker.template.SimpleScalar on line 59, column 71 in org\/alfresco\/repository\/site\/site.lib.ftl.'. Please contact your system administrator."
このスカラー (${siteNode.properties["my:customAspectDate"]}) を表示すると、結果の JSON で org.mozilla.javascript.NativeDate が文字列として取得されます。
"startdate": "org.mozilla.javascript.NativeDate@7a6e5e2e",
site.get.json.ftl のsiteNodeに同じパラメーターを設定することで、これを繰り返すことができます。siteNode.properties["cm:created"] を使用すれば、それを繰り返すこともできます。
javascriptコントローラーがノードからモデルオブジェクトを作成すると、作成された日付の小道具がjava.util.DateまたはFreemarkerが使用するものとして作成され、Freemarker自体がそのプロパティを作成すると、org. mozilla.javascript.NativeDate.
日付が表示されるようにコードを改善する方法を教えてください。呼び出しで同じ値を取得するには、何を使用できますか?
違いがあれば、SVN HEADのAlfrescoを使用しています。