Projets
Pages enfant
  • 1.9.3 Ecriture des formulaires

Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

...

Il existe des convertisseurs par défaut dansJSF dans JSF (DateTimeConverter et NumberConverter). Ils permettent de transformer une date ou un nombre suivant différentes règles, par exemple :

Bloc de code
<h:outputText value="#{testController.date}">
   <f:convertDateTime dateStyle="short" locale="#{sessionController.locale}"/>
</h:outputText>

...

Bloc de code
<h:selectOneMenu id="locale" onchange="submit();"
                 value="#{preferencesController.locale}"
                 converter="#{localeConverter}">
   <f:selectItems value="#{preferencesController.localeItems}"/>
</h:selectOneMenu>

...

Bloc de code
<bean id="localeConverter"
      class="org.esupportail.commons.web.converters.LocaleConverter">
  <description>
     A converterforLocale objects.
  </description>
</bean>

...

Un des objectifs de l'utilisation de JSF est, via un standard de haut niveau, de tendre vers plus d'accessibilité (WAI : Web Accessibility Initiative). L'accessibilité des applications doit être une préoccupation constante des programmeurs, qui ne doivent pas hésiter à tester leurs applications en utilisant des navigateurs pauvres , tel tels que Lynx. En règle générale, on évitera absolument d'utiliser les balises h:commandLink qui, à cause de l'utilisation de Javascript, brisent toutes les règles de l'accessibilité. On préfèrera dans tous les cas des boutons (h:commandButton). Javascript peut néanmoins être utilisé pour améliorer l'IHM des applications, en faisant attention à ce que les navigateurs ne parlant pas Javascript puissent quand même utiliser l'application. Nous montrons ici à titre d'exemple comment on peut soumettre un formulaire par simple changement de la valeur d'une boite déroulante :

Bloc de code
<h:form id="form">
   <h:messages />
   <h:outputLabel for="value" value="#{msgs['TEXT.VALUE']}"/>
   <h:selectOneMenu id="value" onchange="submit();" value="#{controller.value}">
      <f:selectItems value="#{controller.valueItems}"/>
   </h:selectOneMenu>
   <h:commandButton value="#{msgs['BUTTON.CHANGE']}" id="changeButton"/>
</h:form>
<script type="text/javascript">
   hideButton("form:changeButton");
</script>

...