Not sure which version of JSF you're using but either way you need to lose the () and call it by the member, not the getter method. The EL will automatically go for the getter.
I don't have the source code on this notebook, but the ui:repeat-part seemed to work fine, it was the concatenation that didn't work. Do you see anything wrong there?
I called "getParts()" because it isn't a property in sense of having a getter and setter. It was just a method that provides me a list. (Which is always the same anyway.)
Facelets is not a programming language, and EL is not a scripting language. It violates the whole purpose of MVC when you put code in the View. Might as well use a chainsaw to butter your scones.
The ui:repeat construct gets overused by people who seem to think they're gaining something by not using one of the graphically-oriented JSF table tags. There's a definite place for ui:repeat, but please use the right tool for the job.
Your EL is expecting JSF to evaluate 2 separate EL expressions and then evaluate the results of that expression. You'd need an extra layer of "#{}" to indicate that, but I don't think nested EL is supported, since as I said, the purpose of EL is not to be a scripting language.
The secret of how to be miserable is to constantly expect things are going to happen the way that they are "supposed" to happen.
You can have faith, which carries the understanding that you may be disappointed. Then there's being a willfully-blind idiot, which virtually guarantees it.
Don't get me started about those stupid light bulbs.