<logic:equal/> looks for an attribute with the given "name" and compares for equality with the given "value". <bean:define/> not only creates a scripting variable but also puts an attribute with the same name. Here you only modify the value of the scripting variable and not the "attribute" value, which is what the <logic:equal/> is going to look for which is not modified from the initial "true" value and so you would end up executing that block of code always.
You could do any of the following: Use <bean:size> and compare the size to 0 using <logic:equal/> to check if the collection is empty or not Use <logic:empty/> to check the emptiness instead of the <logic:equal/> On 9/15/05, Filipe Pomar <[EMAIL PROTECTED]> wrote: > > Guys, I have the following pseudo-code: > > <bean:define id="isEmpty" value="true" type="java.lang.String"/> > > // begin: some iteration > <%isEmpty="false";%> > // end: some iteration > > > ... then I want to test if isEmpty is true. The body of following code > always get executed: > <logic:equal name="isEmpty" value="true"> > // some code that always run > </logic:equal> > > > ... though, the behavior I expected to get is seen only when using > scriptlets, as follow: > <% if ("true".equals(isEmpty)) { %> > // works fine > <% } %> > > > Any ideas on why this happens are much appreciated. > > Regards, > Filipe > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > >