JSF)

Vous aimerez peut-être aussi

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 15

Conversion &

Validation

12/12/11 JSF – Introduction 1


  Q: Que se passe-t-il si le client fait une
mauvaise saisie ?
  R1 : On laisse le Bean qui traite ces erreurs.
  Remarque : ca devient très lourd, le Bean doit
gérer à la fois les règles métiers et la gestions
des erreurs.
  R2: Il est souhaitable de séparer les deux
aspects.

12/12/11 JSF – Introduction 2


  JSF fournit un mécanisme standard de
conversion et de validation pour traiter les
saisies et assurer les intégrités des données.
  La conversion et la validation permettent aux
développeurs de se concentrer sur la logique
métier au lieu de passer du temps à vérifier si
la date s’écrit DD/MM/YY, …
  La conversion que les informations sont du bon
type. Ex: String  java.util.Date.
  La val. Garantit que les données contiennent
ce qui est attendu. Ex : valeur entre A et B.
12/12/11 JSF – Introduction 3
  Avant de mettre à jour le modèle du Bean géré,
ces données textuelles doivent être converties
dans les objets cibles.
  L’opération inverse : les données seront
renvoyées au client dans la réponse pour être
affichées par le navigateur.
  JSF convertira automatiquement la valeur du
composant d’interface dans le type (standard :
Integer, Date …) adéquat et inversement.
  Autre Type, Création de notre propre Converter.
12/12/11 JSF – Introduction 4
Convertisseur Description
BigDecimalConverter String <-> java.math.BigDecimal
BigIntegerConverter String <-> java.math.BigInteger
TYPEConverter (en generale ) String <-> TYPE
DateTimeConverter String <-> java.util.Date
EnumConverter Convertit un String en Enum

12/12/11 JSF – Introduction 5


Attributs type Valeur
Type String number (par défaut) pour des réels, currency pour les
monétaires et percent pour poucentage
pattern String java.text.DecimalFormat ( un motif présentation).
"#,##0.00 F".
maxFractionDigits int Impose une valeur limite sur le nombre de chiffres
décimaux à représenter.
minFractionDigits Int Si le nombre ne possède pas de valeurs décimales,
les 0 sont proposés.
maxIntegerDigits int Impose une valeur limite sur le nombre de chiffres sur
la partie entière de la valeur réelle à représenter.
minIntegerDigits int Impose un nombre de chiffres sur la partie entière à
représenter.
IntegerOnly Boolean
groupingUsed Boolean Prendre en compte ou pas la séparation des milliers
locale util.Locale Choix du paramètre régional à utiliser.
currencyCode
12/12/11 String La JSF
monnaie à prendre en compte comme "EUR" 6
– Introduction

currencySymbol String Une autre monnaie non prévue par le standard


Attributs type Valeur
Type String date (par défaut) pour prendre en compte la date
uniquement, time pour prendre en compte l'heure
uniquement, ou both pour prendre en compte à la fois la
date et l'heure.
pattern String java.text.SimpleDateFormat ( un motif présentation).
dataStyle String default, short, medium, long ou full. Affiche la date avec
plus ou moins de renseignements.
timeStyle String default, short, medium, long ou full. Affiche l’heure avec
plus ou moins de renseignements.
locale Util.Locale Choix du paramètre régional à utiliser.
timeZone String Tient compte du fuseau horaire.

12/12/11 JSF – Introduction 7


 

 

12/12/11 JSF – Introduction 8


  Parfois, on a besoin d’une conversion adaptée
à la situation au delà de number et date.
  pour cela, Ecrire une classe qui implémente
l’interface javax.faces.convert.Converter
  Possède deux méthodes :
1.  Object getAsObject(FacesContext ctx,
UIComponent component, String value)
2.  String getAsString(FacesContext ctx,
UIComponent component, Object value)

12/12/11 JSF – Introduction 9


@FacesConverter(value = "euroConverter")
public class EuroConverter implements Converter {

public Object getAsObject(FacesContext ctx, UIComponent


component, String value) { return value; }
public Object getAsString (FacesContext ctx, UIComponent
component, Object value) {
float amountInDollars = Float.parseFloat(value.toString());
double ammountInEuros = amountInDollars * 0.8;
DecimalFormat df = new DecimalFormat("###,##0.##");
return df.format(ammountInEuros);
}}

<h:outputText value="#{book.price}"/>
<h:outputText value="#{book.price}">
<f:converter converterId="euroConverter"/>
</h:outputText>
Ou par exemple
<h:outputText value="#{book.price}" converter="euroConverter"/>

12/12/11 JSF – Introduction 10


  Les apps web doivent garantir que les données
saisies sont valides.
  Cette vérification peut avoir lieu côté client avec
JS ou côté serveur avec des validateurs.
  Les validateurs agissent comme des contrôles
de premier niveau en validant les valeurs avant
qu’elles ne soient traitées par le Bean géré.
  Ex : vérifier qu’une valeur est obligatoire

12/12/11 JSF – Introduction 11


Convertisseur Attribut Description
DoubleRangeValidator minimum Compare la valeur du composant aux valeurs
maximum minimales et maximales indiquées.
LengthValidator minimum, Teste le nombre de caractères de la valeur
maximum textuelle du composant.
LongRangeValidator minimum, Compare la valeur du composant aux valeurs
maximum minimales et maximales indiquées
RegexValidator pattern Compare la valeur du composant à une expression
régulière.

12/12/11 JSF – Introduction 12


<h:inputSecret id="password" value="#{user.password}">
<f:validateRegex pattern="((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})" />
</h:inputSecret>

12/12/11 JSF – Introduction 13


  Sion veut valider un code postal ou une
adresse de courrier électronique.
  Dans ce cas, vous devrez créer votre propre
validateur.
  un validateur est une classe qui doit
implémenter javax.faces.validator.Validator
  Possède :
1.  void validate(FacesContext context,
UIComponent component, Object value)

12/12/11 JSF – Introduction 14


@FacesValidator(value = "isbnValidator")
public class IsbnValidator implements Validator {
private Pattern pattern; private Matcher matcher;
public void validate(FacesContext context,UIComponent component,Object value)
throws ValidatorException {
String componentValue = value.toString();
pattern = Pattern.compile("(?=[-0-9xX]{13}$)");
matcher = pattern.matcher(componentValue);
if (!matcher.find()) {
String message = MessageFormat.format("{0} is not a valid isbn
format",componentValue);
FacesMessage facesMessage =new FacesMessage(SEVERITY_ERROR, message,
message); throw new ValidatorException(facesMessage); } }}

<h:inputText value="#{book.isbn}" validator="isbnValidator"/>


ou
<h:inputText value="#{book.isbn}"><f:validator
validatorId="isbnValidator" /> </h:inputText>

12/12/11 JSF – Introduction 15

Vous aimerez peut-être aussi