Uploaded image for project: 'OFBiz'
  1. OFBiz
  2. OFBIZ-6249

Complete OFBIZ-6057 (error in Freemarker 2.3 versions higher than 2.3.19)

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Cannot Reproduce
    • Affects Version/s: Release Branch 13.07, Release Branch 14.12, Trunk
    • Fix Version/s: 14.12.01, 13.07.03, 15.12.01
    • Component/s: accounting, order
    • Labels:
      None

      Description

      This is the contiunation of OFBIZ-6057 which have fixed the case below, I simply sort of quote its description here to get the idea:

      In order to fix OFBIZ-2120, code was added to the applications/order/webapp/ordermgr/quote/ViewQuoteItemInfo.ftl file. This was working with previous versions of Freemarker but is now in 2.3 a problem at line 46 of this commit: https://github.com/apache/ofbiz/commit/27253c4667e87721212fa8955d75c74a0d171c73
      This ends up causing the following error:

           [java] freemarker.core.InvalidReferenceException: The following has evaluated to null or missing:
           [java] ==> null  [in template "component://order/webapp/ordermgr/quote/ViewQuoteItemInfo.ftl" at line 56, column 40]
           [java] Tip: If the failing expression is known to be legally refer to something that's null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
           [java] FTL stack trace ("~" means nesting-related):
           [java] 	- Failed at: #assign product = null  [in template "component://order/webapp/ordermgr/quote/ViewQuoteItemInfo.ftl" at line 56, column 21]
           [java] 	- Reached through: #list quoteItems as quoteItem  [in template "component://order/webapp/ordermgr/quote/ViewQuoteItemInfo.ftl" at line 52, column 13]
      

      The main reason for this is because there is no concept of "null" in FreeMarker 2.3 (after 2.3.19), as the following thread kinda explains: http://ehc.ac/p/freemarker/discussion/2346/thread/85da30a4/ Not sure how to go about fixing this error, the thread suggests setting the variable to the string "null".

      There are still other instances of this bug in:

      applications/order/webapp/ordermgr/return/returnItems.ftl 
          <#assign returnItemSubTotal = null > <#-- otherwise the last item's might carry over -->
      applications/accounting/webapp/accounting/reports/DepositSlip.fo.ftl 
          <#assign creditCard = null/>
      framework/webtools/webapp/webtools/datafile/viewdatafile.ftl 
          <#assign lastRecordName = null>
      

      There is no needs to change R12.04 though it uses Freemarker 2.3, exactly 2.3.19. I guess this issue only exists in 2.3 versions above 2.3.19!
      Note that this should no longer be a problem in Freemarker 2.4... and hopefully above... But for now the other null assignments are wrong in trunk and newer branches.

        Issue Links

          Activity

          Hide
          jacques.le.roux Jacques Le Roux added a comment -

          Following "Reproduction Steps" in OFBIZ-6057 I cannot reproduce
          R12.04 not fixed

          Show
          jacques.le.roux Jacques Le Roux added a comment - Following "Reproduction Steps" in OFBIZ-6057 I cannot reproduce R12.04 not fixed

            People

            • Assignee:
              jacques.le.roux Jacques Le Roux
              Reporter:
              jacques.le.roux Jacques Le Roux
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development