Хорошо,
Я думаю, я нашел, почему это происходит:
Вместо оценки EL перед передачей его в атрибут «rendered», передается полный EL.
Поскольку компонент outputSytylesheet не знает о cc.attrs, он всегда оценивает его как false.
So
<h:outputStylesheet rendered="#{someBean.somevalue == 'somevalue'}" library="css" name="mainDark.css" target="head" />
или
<h:outputStylesheet rendered="#{2 gt 1}" library="css" name="mainDark.css" target="head" />
работает, потому что его можно оценить. В то время как
<h:outputStylesheet rendered="#{cc.attrs.somevalue == 'somevalue'}" library="css" name="mainDark.css" target="head" />
всегда будет оцениваться как «ложный» внутри компонента.
Если кто-то еще сталкивается с этой «ошибкой», я нашел наиболее удобное «решение»:
<h:outputStylesheet library="css" name="#{cc.attrs.enabled ? 'mainDark.css' : 'empty.css'}" target="head" />
Если кто-нибудь знает правильное решение этой проблемы, пожалуйста, не стесняйтесь ответить:)
С уважением, Кристиан
РЕДАКТИРОВАТЬ: Это также может быть, потому что CSS отображается за пределами составного компонента, и, следовательно, не может оценить cc.attrs.