[
https://issues.apache.org/jira/browse/FREEMARKER-21?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15863386#comment-15863386
]
Daniel Dekany commented on FREEMARKER-21:
-----------------------------------------
In {{(foo as bar)!"Hello!"}} the assignment to {{bar}} simply wouldn't happen,
since evaluating {{foo}} basically causes an exception which is then handled by
the {{(...)!exp}}. Confusing, I know, but the intended use is the opposite,
that is, we use the `as`-ed (or, well, `into`-ed) variable when its left side
has existed.
As of handling missing values in FreeMarker, the problems of it (particularly
when it comes to assigning things) are known, but I don't think we can do much
about it in FreeMarker 2. It was made like this 14 years ago or so, and you
simply can't break backward compatibility that much in 2.x, because that means
that tons of projects can't update FreeMarker anymore. That's why FreeMarker 3
was started not long ago, and there the point is to move into another package
(so it doesn't interfere with FreeMarker 2) and break backward compatibility
and do what's right. But if 3 ever comes out one day, FreeMarker 2 will remain
with us for a long time...
> Reference to the object in condition - avoid repeating the same in #if and
> ${...}
> ---------------------------------------------------------------------------------
>
> Key: FREEMARKER-21
> URL: https://issues.apache.org/jira/browse/FREEMARKER-21
> Project: Apache Freemarker
> Issue Type: New Feature
> Components: engine
> Reporter: Ondra Žižka
>
> Repeating stuff is annoying, especially in programming.
> Therefore this is annoying:
> {code}
> <#if someVariable.someMethod.someProperty??>
> <div>${someVariable.someMethod.someProperty}</div>
> </#if>
> {code}
> This would be better:
> {code}
> <#if someVariable.someMethod.someProperty?? as value>
> <div>${value}</div>
> </#if>
> {code}
> Not talking about the fact that it could only be evaluated once.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)