Frage
Ich habe eine JSF-Verbundkomponente h zu verlängern: INPUTBOX
<p class="label clear">
<label for="#{cc.attrs.id}" class="">
#{cc.attrs.label}:
</label>
</p>
<p>
<h:inputText id="#{cc.attrs.id}" value="#{cc.attrs.value}"
size="#{cc.attrs.size}" />
<ui:fragment rendered="#{cc.attrs.optional eq 'optional'}">
<span class="optional">Optional</span>
</ui:fragment>
</p>
Um diese Komponente zu verwenden ..
<my:inputText id="firstName" label="First Name" value="#{nameTO.firstName}"/>
Wenn diese Komponente im Browser gerendert wird, die ID des Formats. „VorName: vorName“
<input type="text" value="" name="firstName:firstName" id="firstName:firstName" gtbfieldid="3028">
Ist das ein Standardnamenskonvention mit JSF 2.0-Vorlagen? Ich habe dies nicht mit JSF 1.2 Facelets Vorlagen. Gibt es eine Möglichkeit, die ID nur als „Vornamen“ statt zu erzeugen „Vornamen: vorName“
Lösung
Ein JSF 2.0 Verbundbauteil ist nicht das gleiche wie ein JSF 1.x / 2.x Facelets Vorlage.
Die Verbundkomponente hat ihre eigene ID als auch. Sie Wiederverwendung es im Grunde auf den Komponenten bei der Umsetzung des Verbundbauteils. Sie können eine andere ID-Attribut hinzufügen oder umbenennen für die Komponenten bei der Umsetzung berücksichtigen wollen. Z.
<my:inputText name="firstName" label="First Name" value="#{nameTO.firstName}" />
mit
<h:inputText id="#{cc.attrs.name}">
Es wird jedoch als id="ccId:firstName"
in HTML landen, wo ccId
entweder die feste oder automatisch generierte id
von my:inputText
. Sie können auch lassen Sie es einfach weg und Verwendung
<h:inputText id="input">
Welche oben als id="firstName:input"
endet in HTML.