Uploaded image for project: 'Velocity'
  1. Velocity
  2. VELOCITY-565

EvaluateContext does not take account of inner.localContext

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Minor
    • Resolution: Fixed
    • None
    • 1.6
    • None
    • None

    Description

      the following vtl does not render what is, IMHO, expected :

      #macro(testEval $expr)

      #foreach($value in ["val1", "val2"])
      value is : #evaluate( $expr )
      #end
      #end

      #testEval( "${value}" )

      renders :

      value is : ${value}
      value is : ${value}

      The reason is that EvaluateContext ctor assigns 'inner.getBaseContext()'
      to instance variable 'innerContext', and getBaseContext() does not
      return VMContext localContext refs (of the #foreach directive).

      Changing the EvaluateContext ctor so that 'innerContext' is set to
      'inner' allow velocity to render the right result :

      value is : val1
      value is : val2

      But I'm not sure this would be a correct fix, should the VMContext
      return all current refs ? Could you tell me what the normal behavior is
      and what is the way all that stuff sould work ?

      Etienne Massip

      Attachments

        1. EvaluateContext.java
          10 kB
          Etienne Massip
        2. evalvmcontext.patch
          3 kB
          Etienne Massip

        Activity

          People

            wglass William Glass-Husain
            wglass William Glass-Husain
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: