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