Details
Description
When using a custom PropertyResolver in faces-config.xml like this:
<application>
<property-resolver>
org.springframework.web.jsf.MessageSourcePropertyResolver
</property-resolver>
</application>
the evaluation of an expression involving the PropertyResolver fails, when the expression appears on the right hand side. E.g. the expression #
{ bundle.test == 'xx' }succeeds, whereas #
{ 'xx' == bundle.test }fails. In this example the property resolver is responsible for evaluating the 'test' property on the object 'bundle'.
MyFaces has an expression factory which reassembles the expressions generated from the commons-el parser. This is done by replacing the so called 'suffixes' see org.apache.myfaces.el.ELParserHelper. The bug occurs when instances of BinaryOperatorExpression are handled, because myfaces only replaces the suffix of the first operand. This is why the first example works and the second fails.