Jak łatwo się domyślić, jsf_core
udostępnia podstawowe (i niezależne
od sposobu wyświetlania) znaczniki. Są wśród nich np. tagi konwerterów,
walidatorów, listenerów, które można zagnieździć w tagach komponentów,
rejestrując na nich konwertery, walidatory itd.
Proste przykłady zarejestrowania konwertera daty, walidatora liczb (by były z przedziału od-do) i listenera:
<h:inputText id="userNo"
value="#{UserNumberBean.userNumber}">
<f:validateLongRange
minimum="#{UserNumberBean.minimum}"
maximum="#{UserNumberBean.maximum}" />
</h:inputText>
<h:outputText value="#{cashier.shipDate}">
<f:convertDateTime dateStyle="full" />
</h:outputText>
<h:commandLink id="Germany" action="bookstore"
actionListener="#{localeBean.chooseLocaleFromLink}">
<h:outputText value="#{bundle.German}" />
</h:commandLink>
Do ciekawszych tagów należą poza tym:
<f:view> ... inne tagi ... </f:view>
<f:subview id="nestedPage"> <jsp:include page="nestedPage.jsp"> </f:subview>
<h:column >
<f:facet name="header">
<h:outputText value="#{bundle.ItemQuantity}" />
</f:facet>
<h:inputText id="quantity" size="4"
value="#{item.quantity}" >
</h:inputText>
</h:column>
<f:loadBundle var="bundle" basename="carstore.bundles.Resources"/>by potem użyć zlokalizowanych wiadomości w zagnieżdżonych tagach:
<h:outputText value="#{bundle.Hello}"/>
<h:selectOneMenu id="shippingOption"
required="true"
value="#{cashier.shippingOption}">
<f:selectItem
itemValue="2"
itemLabel="#{bundle.QuickShip}"/>
<f:selectItem
itemValue="5"
itemLabel="#{bundle.NormalShip}"/>
</h:selectOneMenu>
<h:selectManyCheckbox
id="newsletters"
layout="pageDirection"
value="#{cashier.newsletters}">
<f:selectItems
value="#{newsletters}"/>
</h:selectManyCheckbox>