Exemple avec JSF 2 convertNumber

Dans JSF, « f: convertNumber » est un convertisseur standard, qui convertit String en un format «Number» spécifié. En outre, il est également utilisé en tant que validateur pour s’assurer que la valeur entrée est un nombre valide. Voir les exemples couramment utilisés suivants:

<h:outputText value="#{receipt.amount}" >
    <f:convertNumber minFractionDigits="2"/>
</h:outputText>

Afficher la valeur sous la forme «0.10».

  • 2. attribut de motif **

<h:outputText value="#{receipt.amount}" >
    <f:convertNumber pattern="#0.000"/>
</h:outputText>

Affichez la valeur sous la forme «0,100».

<h:outputText value="#{receipt.amount}" >
    <f:convertNumber currencyCode="GBP" type="currency"/>
</h:outputText>

Affichez la valeur sous la forme «GBP0.10».

  • Remarque Le currencyCode est défini dans http://www.iso.org/iso/support/currency codes list-1.htm[ISO 4217]. Pour utiliser l’attribut currencyCode, l’attribut type doit être remplacé par « currency ** ».

  • 4. type = attribut "pour cent" **

<h:outputText value="#{receipt.amount}" >
    <f:convertNumber type="percent"/>
</h:outputText>

Afficher la valeur sous la forme «10%».

P.S Pour d’autres attributs «f: convertNumber», vous pouvez visiter ce JSF «f: convertNumber» JavaDoc .

Exemple JSF f: convertNumber

L’exemple complet suivant de JSF 2.0 vous montre comment utiliser la balise « f: convertNumber »

1. Bean géré

Un haricot simple géré, avec une propriété de «montant».

package com.mkyong;

import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean(name="receipt")
@SessionScoped
public class ReceiptBean implements Serializable{

    double amount;

    public double getAmount() {
        return amount;
    }

    public void setAmount(double amount) {
        this.amount = amount;
    }

}

2. Exemples de f: convertNumber

La page JSF XHTML utilise la balise « f: convertNumber » pour effectuer la validation ainsi que le formateur de chaînes

  • default.xhtml **

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:c="http://java.sun.com/jsp/jstl/core"
      >
    <h:body>

        <h1>JSF 2 convertNumber example</h1>

       <h:form>

        <h:panelGrid columns="3">

            Amount :
            <h:inputText id="amount" value="#{receipt.amount}"
                size="20" required="true"
                label="Amount" >
                <!-- display in at least 2 decimal points -->
                <f:convertNumber minFractionDigits="2"/>
            </h:inputText>

            <h:message for="amount" style="color:red"/>

        </h:panelGrid>

        <h:commandButton value="Submit" action="receipt"/>

       </h:form>

    </h:body>
</html>
  • receive.xhtml **

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:c="http://java.sun.com/jsp/jstl/core"
      >
    <h:body>

        <h1>JSF 2 convertNumber example</h1>

      <ol>
        <li>
            Amount[minFractionDigits="2"]:
            <h:outputText value="#{receipt.amount}" >
                <f:convertNumber minFractionDigits="2"/>
            </h:outputText>
        </li>
        <li>
            Amount[pattern="#0.000"]:
            <h:outputText value="#{receipt.amount}" >
                <f:convertNumber pattern="#0.000"/>
            </h:outputText>
        </li>
        <li>
            Amount[currencySymbol="$"]:
            <h:outputText value="#{receipt.amount}">
                <f:convertNumber currencySymbol="$" type="currency"/>
            </h:outputText>
        </li>
        <li>
            Amount[currencyCode="GBP"]:
            <h:outputText value="#{receipt.amount}" >
                <f:convertNumber currencyCode="GBP" type="currency"/>
            </h:outputText>
        </li>
        <li>
            Amount[type="percent"]:
            <h:outputText value="#{receipt.amount}" >
                <f:convertNumber type="percent"/>
            </h:outputText>
        </li>
       </ol>

    </h:body>
</html>

3. Démo

Si l’utilisateur remplit un format de numéro non valide, affiche le message d’erreur.

jsf2-ConvertNumber-Example-1

Saisissez une valeur « 0.01 » et cliquez sur le bouton «Soumettre».

jsf2-ConvertNumber-Example-2

Affiche la valeur soumise dans un format d’affichage différent.

jsf2-ConvertNumber-Example-3

Télécharger le code source

Téléchargez-le - lien://wp-content/uploads/2010/10/JSF-2-ConvertNumber-Example.zip[JSF-2-ConvertNumber-Example.zip](10 Ko)