Fetishcode…Thinking in objects

Thinking in objects

Validador de Números de Tarjetas de crédito en JSF.

dejar un comentario »

CreditCard Validator in JSF

Implementamos el validador:

package view.validators;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.Validator;

import javax.faces.validator.ValidatorException;

public class ValidatorCreditCard implements Validator{
    //Credit card validator for AMEX, VISA, MasterCard only.
    //Allows spaces, dashes, or no separator between digit groups according to the layout
   // (4-6-5 for AMEX, 4-4-4-4 for Visa and Mastercard)
    String regex="^((4\\d{3})|(5[1-5]\\d{2}))(-?|\40?)(\\d{4}(-?|\40?)){3}|^(3[4,7]\\d{2})(-?|\40?)\\d{6}(-?|\40?)\\d{5}";

    public void validate(FacesContext facesContext, UIComponent uiComponent,
                         Object object) {
        String val = (String)object;
        if (!val.matches(regex)) {
            throw new ValidatorException(new FacesMessage("La Tarjeta de Credito no es valida"));
           }
    }
}

Lo registramos en el faces-config:

 <validator>
<validator-id>ValidatorCreditCard</validator-id>
<validator-class>view.validators.ValidatorCreditCard</validator-class>
</validator>

Lo usamos en nuestro componente:

 <af :inputText value="#{bindings.numeroTarjetaCredito.inputValue}"
                                label="#{bindings.numeroTarjetaCredito.label}"
                                required="#{bindings.numeroTarjetaCredito.mandatory}"
                                columns="#{bindings.numeroTarjetaCredito.displayWidth}"
                                binding="#{backing_paginas_pagoTarjeta.inputText1}"
                                id="inputText1" autoSubmit="true">
                                <af :validator binding="#{ValidatorCreditCard}" validatorId="ValidatorCreditCard"/>
                  </af>

Escrito por fetishcode

Marzo 28, 2009 a 9:39 am

Escrito en JSF

Etiquetado con

Escribe un comentario