[
https://issues.apache.org/jira/browse/FREEMARKER-8?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14999160#comment-14999160
]
Daniel Dekany edited comment on FREEMARKER-8 at 11/10/15 7:20 PM:
------------------------------------------------------------------
OK, part of my above answers was hasty...
There is {{++}} in FTL, but it can only be used in assignments. You can't
modify the value of a variable in the middle of a generic expression.
As of the feature request, not everyone will agree that allowing map and list
modifications in a template is a good strategy. You aren't supposed to modify
the data model. It can happen though that such operation would be useful for
internal calculations, where the map is created inside the template, so that's
a valid reason for it. OTOH we don't want to encourage people to implement
complex algorithms in FTL... it's not a programming language, it's just a
template language language.
Also, if you really need to do that, and you know that you have a `Map` behind
some variable, then you can do `myMap?api.put(key, value)` and such (i.e., use
the Java API of the object), after configuring FreeMarker to allow that (see
related FAQ entry).
was (Author: ddekany):
OK, part of my above answers was hasty...
There is {{++}} in FTL, but it can only be use in assignments. You can't modify
the value of a variable in the middle of a generic expression.
As of the feature request, not everyone will agree that allowing map and list
modifications in a template is a good strategy. You aren't supposed to modify
the data model. It can happen though that such operation would be useful for
internal calculations, so that's a valid reason for it. OTOH we don't want to
encourage people to implement complex algorithms in FTL... it's not a
programming language, it's just a template language language.
Also, if you really need to do that, and you know that you have a `Map` behind
some variable, then you can do `myMap?api.put(key, value)` and such (i.e., use
the Java API of the object), after configuring FreeMarker to allow that (see
related FAQ entry).
> Adding to a hash (map)
> ----------------------
>
> Key: FREEMARKER-8
> URL: https://issues.apache.org/jira/browse/FREEMARKER-8
> Project: Apache Freemarker
> Issue Type: New Feature
> Components: engine
> Affects Versions: 2.3.23
> Reporter: Ondra Žižka
>
> It would be nice to assign to a map this way:
> {code}
> <#assign map["key"] = 1>
> {code}
> and also
> {code}
> <#assign map["key"]++>
> {code}
> So far I think it's like this but can't get it work:
> {code}
> <#assign map += {classification.classification :
> map[classification.classification]!++}>
> {code}
> Thanks for considering.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)