mercredi 20 mars 2013

Formater des nombres en Visualforce

Vous avez peut-être déjà essayé d'afficher des nombres formatés "à la française" (l'espace comme séparateur de milliers) avec la balise Visualforce <apex:outputText.../>, et vous avez peut-être déjà réussi (please tell me!), mais moi j'ai beau avoir tout essayé, il n'y a rien à faire... Voici donc un work-around qui vous permettra d'arriver à vos fins.


Le but est donc d'afficher en Visualforce un nombre/devise sous la forme 123 456,70
Avant tout je vous rappelle que la balise <apex:outputField.../> gère très bien cet affichage mais doit obligatoirement afficher le contenu d'un champs d'un objet Salesforce. Or dans certaines situations on ne veut pas afficher un champ mais une propriété de type Decimal du contrôleur par exemple.

Dans ce cas, la balise <apex:outputText.../> (voir documentation) est censé répondre à nos attentes.

Seulement autant il est facile d'afficher un nombre à l'anglo-saxone (123,456.70) avec la notation suivante:


Autant l'équivalent français (123 456,70) est semble-t-il impossible, pas moyen de remplacer les virgules par des espaces...

J'ai donc écrit le petit composant Visualforce suivant pour satisfaire ma demande:


Avec son contrôleur:

On peut ensuite utiliser notre composant de la manière suivante:


Voila, après libre à vous de l'améliorer en ajoutant par exemple une meilleure gestion des devises (€, EUR, $, USD, etc.)

1 commentaire: