In the past I used a lot of getter and setter methods to move as much boolean logic as possible from facelet files to JSF backing beans. This way, the interface of a view was given by the getter and setter methods of its backing bean as well as by the action methods of the backing bean. An advantage of this approach is that the facelet files are rather logic-free and ,therefore, all logic is within the backing beans and can be unit tested.
But with EL 2.2 another programming style became possible. In EL 2.2 you can invoke methods with expressions like
#{bean.collection.size()},
#{bean.collection.add(elem)},
#{bean.property.substring(0, bean.property.indexOf(something))}.
Is the usage of rather complex expressions like parameterized method invocations good style now or do you rather advise against using such expressions? Is there a rule of thumb when to use the new method invocation expressions and when not?