The select renderer uses ResponseWriter#writeText to render SelectItem labels. See:
From the javadoc for ResponseWriter#writeText (http://docs.oracle.com/javaee/6/api/javax/faces/context/ResponseWriter.html#writeText(java.lang.Object, java.lang.String))
Write an object, after converting it to a String (if necessary), and after performing any escaping appropriate for the markup language being rendered.
You can file a jira issue requesting that we add an escape attribute to SelectItems, similar to how we do for messages. We could then invoke ResponseWriter#write when escape=true.
thanks for the hint.
i have tried to replace the writeText(label, null) with write(label) in a custom renderer, but the result is the same.
Now i dont know whether this is actually a RF issue, but it works absolutely fine with selectOneMenu.
Everytime the label is escaped or contains an escaped element the mentioned label wont be rendered correctly, even with the Method write(string).
Can you debug the server code, and see if the sting is escaped before the the write(string) method is called?
yes, the write(string) methode receives the string in an escaped form.
Can you look back up the stack to see where it is getting escaped?
we have two different cases:
1. special attribute for the select component, which generates an empty entry in the list. so this string is escaped by us on purpose (will be replaced with an empty string now)
2. escaped spaces in some items to receive 2 spaces in a row (can be maybe disabled)
so in both cases we do the escaping for the above mentioned reasons. it worked fine with h:selectOneMenu, thats why we thought it will do so with RF aswell.
Can you see if the & in your entiry is getting escaped prior to the write call? As in &#160;