Salı, Kasım 25, 2008

JSF te custom validation

Merhabalar,
jsf te validasyonların ne kadar kolay yapıldığını görelim istedim. normal bir jsf sayfasında hazır validasyonlardan;
f:validateLength
f:validateDoubleRange ve
f:validateLongRange kullanılarak girilen değerin uzunluk aralığını ve nullable ını kontrol edebiliriz.

örnek olarak;

vererek girilen değer aralığının 3 ile 15 arasında olmasını sağlarız.

asıl üzerinde duracağımız ise custom validasyonlar;
custom validasyon yazmak için tek yapmamız gereken Validator interface ini implement etmek. classı implement ettiğimizde validate metodunu da override etmemiz gerekir. ikinci adımda validasyon classımızı faces-config dosyasına yazıyoruz. üçüncü adımda ise kullanıyoruz. şöyle ki;

1.

package test.validator;
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 AmountTypeValidator implements Validator {

public void validate(FacesContext arg0, UIComponent arg1, Object val) throws ValidatorException {
// TODO Auto-generated method stub
if ((val != null) && (!val.equals("select"))) {
return;
} else {
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Please Select Amount Type",
"Please Select Amount Type");
message.setSeverity(FacesMessage.SEVERITY_ERROR);
throw new ValidatorException(message);
}
}
}

eğer değerimiz null ise veya "select" ise o zaman uyarı veriyoruz.

2:

<validator>
<validator-id>AmountTypeValidator</validator-id>
<validator-class>test.validator.AmountTypeValidator</validator-class>
</validator>


3:

<h:selectOneMenu id="discountAmountType" required="#{testBean.amountTypeRequired}" value="#{testBean.selectedAmountType}">
<f:validator validatorId="AmountTypeValidator" />
<f:selectItem itemValue="select" itemLabel="Please Select" />
<f:selectItem itemValue="TRY" itemLabel="TRY" />
<f:selectItem itemValue="USD" itemLabel="USD" />
<f:selectItem itemValue="EUR" itemLabel="EUR" />
<f:selectItem itemValue="KILO" itemLabel="KILO" />
</h:selectOneMenu>

Hiç yorum yok:

Yorum Gönder