[ 
https://issues.apache.org/jira/browse/VELOCITY-657?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12659121#action_12659121
 ] 

Nathan Bubna commented on VELOCITY-657:
---------------------------------------

Yeah, we need to merge the change to the 1.6.x branch.  Perhaps then someone 
else will be willing to try and run the 1.6.2 release process?  Claude is right 
that i should not be the only one prepared to do releases.

> $velocityHasNext not working properly (returns true even if iterator does not 
> have next value)
> ----------------------------------------------------------------------------------------------
>
>                 Key: VELOCITY-657
>                 URL: https://issues.apache.org/jira/browse/VELOCITY-657
>             Project: Velocity
>          Issue Type: Bug
>          Components: Engine
>    Affects Versions: 1.6
>            Reporter: Dominik Marks
>            Priority: Minor
>         Attachments: velocity-657-testcase.patch
>
>
> Using the new "velocityHasNext" feature in loops does not work as expected.
> When using the following excerpt:
> #foreach ($value in $element.values)
>  $value 
>  #if( $velocityHasNext )
>   SEPARATOR
>  #end
> #end
> and having $element.values as e.g. "test1", "test2", "test3"
> I get
> test1 SEPARATOR test2 SEPARATOR test3 SEPARATOR
> but I would expect
> test1 SEPARATOR test2 SEPARATOR test3
> When looking into the source code, I see the following in 
> org.apache.velocity.runtime.directive.Foreach.render():
> while (!maxNbrLoopsExceeded && i.hasNext())
>         {
>             // TODO: JDK 1.5+ -> Integer.valueOf()
>             put(context, counterName , new Integer(counter));
>             put(context, hasNextName, Boolean.valueOf(i.hasNext()));
>             Object value = i.next();
>             put(context, elementKey, value);
>       ....
> }
> Isn't this the wrong order of instructions?
> I would expect:
>             Object value = i.next();
>             put(context, hasNextName, Boolean.valueOf(i.hasNext()));
> So that the $velocityHasNext variable will be filled with the "hasNext" of 
> the follow-up iteration and not with the "hasNext" of the current iteration 
> (which will always be true, otherwise the loop has finished before).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@velocity.apache.org
For additional commands, e-mail: dev-h...@velocity.apache.org

Reply via email to