Primefaces outputLabel dla komponentu kompozytowego

Mam problem z używaniemp:outputLabel w przypadku użycia z komponentem kompozytowym. Mam komponent kompozytowyp:inputText pole (usunąłem nieistotne części z komponentu):

<cc:interface>
  <cc:editableValueHolder name="myInput" targets="myInput"/>
  <cc:attribute name="required" required="true" type="java.lang.Boolean" default="false"/>
</cc:interface>

<cc:implementation>
  <p:inputText id="myInput" required="#{cc.attrs.required}"/>
</cc:implementation>

Teraz nie będę używać tego komponentu zp:outputLabel:

<p:outputLabel for="myComponent:myInput" value="#{resources['myLabel']}:"/>
<my:myComponent id="myComponent" required="#{myBean.required}"/>

Wszystko działa dobrze, wymagana walidacja, wyświetlany jest również komunikat, ale nie ma* podpisz etykietę, tak jak w przypadku bezpośredniego łączenia etykiety zp:inputText składnik. Jeśli ja, z drugiej strony, hardcoderequired="true" nap:inputText wszystko dziala.

Przeszukałamorg.primefaces.component.outputlabel.OutputLabelRenderer i odkrył, że składnik jest rozpoznawany jakoUIInput, aleinput.isRequired() zwraca false. Dochodziło do tego dalsze debugowanierequired atrybut nie jest jeszcze zdefiniowany w komponencie, więc zwracafalse jako wartość domyślna iUIInput:

(Boolean) getStateHelper().eval(PropertyKeys.required, false);

Ponadto, jeśli tylko się poruszyłemp:outputLabel wewnątrz komponentu kompozytowego wszystko działa dobrze. Podobnie jak EL jest oceniane później wewnątrz komponentu kompozytowego?

Używam Primefaces 3.5 z Mojarra 2.1.14

questionAnswers(1)

yourAnswerToTheQuestion