Build: 4/18, nightly An expression like ${!cart.empty} results in: tag = 'if' / attribute = 'test': An error occurred while parsing custom action attribute "test" with value "${!cart.empty}": Encountered "empty", expected one of [] where "empty" is a property of "cart", implemented by a public boolean isEmpty() method. If I'm interpreting the precedence rules right, this should work fine because the "." operator has higher precedence than the "empty" operator.
No, I'm pretty sure this is a misinterpretation. "empty" is now an identifier, meaning you can't use it as an identifier any more than you can use "null", "and", or "not." The precedence rules don't apply because you're not attempting to use it as an operator. I had mentioned this in the email that suggested the use of "empty' initially; my understanding of our future plan is that we will eventually map it through the boolean "empty" bean property, thus allowing the expression you've written to be replaced with ${!empty cart} in all cases. Either way, though, you can't use any reserved word as an identifier.
Meant "empty is now a reserved word" at the beginning of my last addition.
Bummer, but I guess you're right ;-)