Il doit encore être utilisé pour de nombreuses choses qui ne peuvent pas être annotées. Par exemple, messages de validation JSF personnalisés:
<application>
<message-bundle>com.example.i18n.messages</message-bundle>
</application>
Un bundle i18n global (pour que vous n'ayez pas besoin de déclarer <f:loadBundle>
dans chaque vue):
<application>
<resource-bundle>
<base-name>com.example.i18n.Text</base-name>
<var>text</var>
</resource-bundle>
</application>
Les locales i18n explicitement prises en charge (afin que celles non déclarées soient ignorées même s'il existe un ensemble de messages ou de ressources pour cela):
<application>
<locale-config>
<default-locale>en</default-locale>
<supported-locale>nl</supported-locale>
<supported-locale>es</supported-locale>
<supported-locale>de</supported-locale>
</locale-config>
</application>
Gestionnaires de vues personnalisées :
<application>
<view-handler>com.example.SomeViewHandler</view-handler>
</application>
Écouteurs de phase (il n'y a toujours pas d'annotation pour cela):
<lifecycle>
<phase-listener>com.example.SomePhaseListener</phase-listener>
</lifecycle>
Haricots gérés qui ne peuvent être annotés (ci - dessous l'on donne en cours Date
sur #{now}
):
<managed-bean>
<description>Current date and time</description>
<managed-bean-name>now</managed-bean-name>
<managed-bean-class>java.util.Date</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
Usines personnalisées, telles que l' usine de traitement d'exception personnalisée (elle permet aussi des usines pour FacesContext
, ExternalContext
, LifeCycle
et beaucoup d' autres pour que vous puissiez fournir votre implémentation personnalisée):
<factory>
<exception-handler-factory>com.example.SomeExceptionHandlerFactory</exception-handler-factory>
</factory>
Pour ne citer que ceux couramment utilisés. Si vous avez la faces-config.xml
saisie semi-automatique des balises dans votre IDE, vous pouvez toutes les trouver. Seuls les beans gérés, les validateurs, les convertisseurs, les composants, les moteurs de rendu et les cas de navigation point à point ne sont plus nécessaires grâce aux nouvelles annotations et à la navigation implicite.