Primefaces outputLabel для составного компонента
У меня проблема с использованиемp:outputLabel
при использовании с композитным компонентом. У меня есть составной компонент сp:inputText
поле (я удалил ненужные части из компонента):
<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>
Теперь я не буду использовать этот компонент сp:outputLabel
:
<p:outputLabel for="myComponent:myInput" value="#{resources['myLabel']}:"/>
<my:myComponent id="myComponent" required="#{myBean.required}"/>
Все работает нормально, требуется проверка, сообщение тоже отображается, но нет*
подписать на этикетке, как есть, когда я подключаю ярлык непосредственно кp:inputText
составная часть. Если я, с другой стороны, жесткий кодrequired="true"
наp:inputText
все отлично работает
Я отлаживалorg.primefaces.component.outputlabel.OutputLabelRenderer
и обнаружил, что компонент признается какUIInput
, ноinput.isRequired()
возвращает ложь Дальнейшая отладка обнаружила, чтоrequired
атрибут еще не определен в компоненте, поэтому он возвращаетfalse
как значение по умолчанию яUIInput
:
(Boolean) getStateHelper().eval(PropertyKeys.required, false);
Кроме того, если я просто переедуp:outputLabel
внутри композитного компонента все работает нормально. Как EL оценивается позже внутри составного компонента?
Я использую Primefaces 3.5 с Mojarra 2.1.14