YazılımMimarı | 12 Haziran 2012 00:31 | JSF PrimeFaces Email Regex Kontrolu Merhaba, JSF Veri Validasyon Döngüsü [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
2EE Frameworkler üzerine bir proje geliştiriyordum. JSF Framework'u ile Primefaces görüntü teknolojilerini beraber kullanıyorum. Bir formum var şu [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...], Email kontrolü yapıp, tekrar JSF arayüzüne ajax ile uyarı göndereceğiz, son kullanıcıya.
Istemci tarafı PHP- Kodu: <f:view> <h:form id="form"> <p:growl id="growl" showDetail="true" life="3000"/> <p:panel id="panel-----" header="-----nuzu Paylaşınız.." style="margin-bottom:10px;"> <h:outputLabel for="email" value="Email" /> <p:inputText value="#{-----Control.-----.-----Email}" validatorMessage="Email formatını kontrol ediniz!" size="50" id="email" label="Email" required="true"> <f:validateRegex pattern="[\w\.-]*[a-zA-Z0-9_]@[\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]" /> </p:inputText> <p:message for="email" /> </p:panel> <p:commandButton value="Ekle" actionListener="#{-----Control.save()}" icon="ui-icon-disk" update="growl,panel-----" /> </h:form> </f:view>
Istemci taraflı email regex kontrolu inputText' imiz için, PHP- Kodu: <f:validateRegex pattern="[\w\.-]*[a-zA-Z0-9_]@[\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]" />
Regex'e uygum olmayan formatta ise vereceğimiz client mesaj için inputText'in validatorMessage özelliğini kullanıyoruz. PHP- Kodu: validatorMessage="Email formatını kontrol ediniz!"
Bu kısım client taraflı kontroller idi.
Asıl önemli olan sunucu taraflı kontrollerimiz.
Validasyonumuz için bir JSF ManagedBan oluşturuyoruz fakat Validator interface sınıf'ımızı implements ediyoruz. implements ettiğimiz Validator sınıfımızın default constructor olan override validate metodu ile gelmektedir. PHP- Kodu: package Egas.View.ControllerBeans;
import javax.faces.bean.ManagedBean; import javax.faces.bean.RequestScoped; import java.util.regex.Matcher; import java.util.regex.Pattern; 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;
/** * * [MENTION=21475]AuthoR[/MENTION] turgay */ [MENTION=88634]mana[/MENTION]gedBean(name = "-----Validator") [MENTION=22994]RequeSt[/MENTION]Scoped public class -----Validator implements Validator{
private static final String EMAIL_PATTERN = "[\\w\\.-]*[a-zA-Z0-9_]@[\\w\\.-]*[a-zA-Z0-9]\\.[a-zA-Z][a-zA-Z\\.]*[a-zA-Z]"; private Pattern pattern; private Matcher matcher;
/** Creates a new instance of -----Validator */ public -----Validator() {
}
@Override public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
throw new UnsupportedOperationException("Format henüz desteklenmiyor."); }
public void validateEmail(FacesContext context, Object value) { pattern = Pattern.compile(EMAIL_PATTERN); matcher = pattern.matcher(value.toString()); if (!matcher.matches()) { FacesMessage msg = new FacesMessage("Email adres hatası.", "Geçersiz Email formatı."); msg.setSeverity(FacesMessage.SEVERITY_ERROR); System.out.println(msg); throw new ValidatorException(msg);
} throw new UnsupportedOperationException("Format henüz desteklenmiyor."); }
}
FacesMessage'ları growl component'ı sayesinde ajax ile aşağıdaki gibi son kullanıcıya veriyoruz. [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] |