Primefaces outputLabel para componente composto
Eu tenho um problema com o usop:outputLabel
quando usado com componente composto. Eu tenho componente composto comp:inputText
campo (removi partes irrelevantes do componente):
<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>
Agora, eu não vou usar este componente comp:outputLabel
:
<p:outputLabel for="myComponent:myInput" value="#{resources['myLabel']}:"/>
<my:myComponent id="myComponent" required="#{myBean.required}"/>
Tudo funciona bem, a validação necessária, a mensagem é exibida também, mas não há*
assinar na etiqueta, como é quando eu conecto o rótulo diretamentep:inputText
componente. Se eu, por outro lado, codificarrequired="true"
emp:inputText
tudo funciona bem.
Depurei atravésorg.primefaces.component.outputlabel.OutputLabelRenderer
e descobriu que o componente é reconhecido comoUIInput
, masinput.isRequired()
retorna falso. Depuração mais distante descobriu querequired
atributo ainda não está definido no componente, então ele retornafalse
como valor padrão iUIInput
:
(Boolean) getStateHelper().eval(PropertyKeys.required, false);
Além disso, se eu me mexerp:outputLabel
dentro do componente composto tudo funciona bem. Como o EL é avaliado posteriormente dentro do componente composto?
Estou usando o Primefaces 3.5 com o Mojarra 2.1.14