[MAGNOLIA-3572] Content wrapper hides java attributes and methods from freemarker (e.g. myContent.class.name) Created: 28/Feb/11  Updated: 04/Nov/15  Resolved: 04/Nov/15

Status: Closed
Project: Magnolia
Component/s: freemarker, templating
Affects Version/s: 4.4.2
Fix Version/s: None

Type: Bug Priority: Neutral
Reporter: Will Scheidegger Assignee: Unassigned
Resolution: Won't Do Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Template:
Acceptance criteria:
Empty
Task DoD:
[ ]* Doc/release notes changes? Comment present?
[ ]* Downstream builds green?
[ ]* Solution information and context easily available?
[ ]* Tests
[ ]* FixVersion filled and not yet released
[ ]  Architecture Decision Record (ADR)
Bug DoR:
[ ]* Steps to reproduce, expected, and actual results filled
[ ]* Affected version filled
Date of First Response:

 Description   

The "specificities" (see http://documentation.magnolia-cms.com/reference/templating/freemarker.html#WorkingwithMagnoliacontent) of how Magnolia handles content objects in Freemarker templates break all access to regular methods of the java object since the dot-notation is pretty much kidnapped and only node datas are returned. To "fix" that, special content properties starting with @... were introduced.

It would been cleaner if the "@..." notation would have been used for accessing jcr attributes (i.e. node datas) and the rest would behave normally, so

${myContent.class} should return the Class object my calling the getClass() method.
${myContent.@class} should return the JCR attribute named "class"

Of course this might be my personal preference, but fact is that I cannot call the getClass() method the way the wrapper ojbect works now but you could get both (JCR attribute and method()) the other way around.



 Comments   
Comment by Magnolia International [ 01/Mar/11 ]

The argument in favor of the current implementation is that your template should not know about anything about Java, or contain any sort of "business" logic.
(another one is that if you allow method calls, you'll also allow calling .save() and all sort of stuff which really does not belong in a template, cfr previous point.)

Comment by Michael Mühlebach [ 04/Nov/15 ]

Given the thousands of other issues we have open that are more highly requested, we won't be able to address this issue in the foreseeable future. Instead we will focus on issues with a higher impact, and more votes.
Thanks for taking the time to raise this issue. As you are no doubt aware this issue has been on our backlog for some time now with very little movement.
I'm going to close this to set expectations so the issue doesn't stay open for years with few updates. If the issue is still relevant please feel free to reopen it or create a new issue.

Generated at Mon Feb 12 03:47:44 CET 2024 using Jira 9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b.