Primefaces outputLabel für zusammengesetzte Komponenten
Ich habe ein Problem mit der Verwendungp:outputLabel
bei Verwendung mit Verbundbauteilen. Ich habe zusammengesetzte Komponente mitp:inputText
Feld (Ich habe irrelevante Teile aus der Komponente entfernt):
<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>
Jetzt verwende ich diese Komponente nicht mehr mitp:outputLabel
:
<p:outputLabel for="myComponent:myInput" value="#{resources['myLabel']}:"/>
<my:myComponent id="myComponent" required="#{myBean.required}"/>
Alles funktioniert einwandfrei, erforderliche Validierung, Meldung wird ebenfalls angezeigt, aber es gibt keine*
sign on label, wie es gibt, wenn ich label direkt mit verbindep:inputText
Komponente. Wenn ich dagegen hardcoderequired="true"
aufp:inputText
alles funktioniert gut
Ich habe durchgetestetorg.primefaces.component.outputlabel.OutputLabelRenderer
und entdeckte, dass Komponente als erkannt wirdUIInput
, aberinput.isRequired()
gibt false zurück. Beim weiteren Debuggen wurde dies festgestelltrequired
Das Attribut ist für die Komponente noch nicht definiert, daher wird es zurückgegebenfalse
als Standardwert iUIInput
:
(Boolean) getStateHelper().eval(PropertyKeys.required, false);
Auch wenn ich mich gerade bewegep:outputLabel
im verbundbauteil funktioniert alles einwandfrei. Wie wird EL später im Verbundbauteil ausgewertet?
Ich verwende Primefaces 3.5 mit Mojarra 2.1.14