Details
-
Bug
-
Status: Closed
-
Minor
-
Resolution: Resolved
-
2.3.23, 2.3.24-incubating, 2.3.25-incubating, 2.3.26-incubating
-
Windows7, jdk1.8.0_131 64bit, Tomcat 8.0.45, SpringMVC 4.3.10.RELEASE, mongo-java-driver 3.4.2
Description
In mongodb's Java Driver 3.x, org.bson.Document is a representation of a bson document as a Map. Although org.bson.Document is not a subclass of LinkedHashMap, it really DOES maintain a meaningful order for its keys.
It works good if I use LinkedHashMap to load data.
LinkedHashMap<String,Object> accepted_sorts = new LinkedHashMap<>(); accepted_sorts.put("-favorite_time", "Hello"); accepted_sorts.put("-publish_time", "Welcome"); model.put("accepted_sorts", accepted_sorts);
<#list accepted_sorts?keys as value> ${value?string} </#list> <br> <#list accepted_sorts as key,value> ${key?string},${value?string} </#list>
it rendered as:
-favorite_time -publish_time -favorite_time,Hello -publish_time,Welcome
But Freemarker doesn't support org.bson.Document's correct key order. You can see my test below:
Document accepted_sorts = new Document(); accepted_sorts.put("-favorite_time", "Hello"); accepted_sorts.put("-publish_time", "Welcome"); model.put("accepted_sorts", accepted_sorts);
<#list accepted_sorts?keys as value> ${value?string} </#list> <br> <#list accepted_sorts as key,value> ${key?string},${value?string} </#list>
it rendered as wrong order:
-publish_time -favorite_time -publish_time,Welcome -favorite_time,Hello
So, in the end, I wish freemarker can add support for org.bson.Document's correct order of keys.