JSF Custom Validation – Eposta Kontrolü
16 December 2008 TuesdayJSF, Java dünyasının web alanında parlayan değeridir. Richfaces, myFaces gibi çeşitli kütüphanelerle yeterli sayılabilecek düzeyde Ajax desteği ile de uygulama geliştirmek mümkündür. JSF’de birtakım validation’lar yani form kontrolleri (doğrulama da denebilir) doğrudan yapılabilir. Ancak bazı özel durumlara özgü validation’lar gerekebilir. Aşağıdaki örnekte JSF ile E-Posta doğrulamasının nasıl yapılacağı açıklanmıştır.
form.jsp içerisinde aşağıdaki gibi basit bir formunuzun olduğunu varsayalım;
<h:form id="registerForm">
<h:outputText value="#{msg.email}" />
<h:inputText id="RegMail" value="#{regForm.email}" required="true" validatorMessage="Mail adresini hatalı" requiredMessage="mail adresi gerekli" validator="#{regForm.emailValidate}">
</h:inputText>
<rich:message for="RegMail"/>
<h:outputText value="Ad" />
<h:inputText id="RegName" value="#{regForm.name}" size="14" maxlength="16" required="true">
</h:inputText>
<rich:message for="RegName"/>
<h:outputText value="Soyad" />
<h:inputText id="RegLastName" value="#{regForm.lastName}" size="14" maxlength="16" required="true">
</h:inputText>
<rich:message for="RegLastName"/>
</h:form>
Yukarıdaki kodlarda altı çizili Validator özelliğine ait java fonksiyonu ise;
public void emailValidate(FacesContext arg0, UIComponent arg1, Object val) throws ValidatorException {
Pattern p = Pattern.compile(".+@.+\\.[a-z]+");
Matcher m = p.matcher(val.toString());
boolean emailCheck = m.matches();
if(!emailCheck) {
throw new ValidatorException(new FacesMessage("Eposta adresi hatalı!"));
}
}
emailValidate fonksiyonunu yer aldığı java class’ının faces-config.xml’deki tanımı;
<managed-bean-name>regForm</managed-bean-name> <managed-bean-class>net.lms.bean.RegisterForm</managed-bean-class> <managed-bean-scope>request</managed-bean-scope> </managed-bean>
Yukarıda yer alan parçaları birleştirdiğinizde RegMail form alanına ilişkin doğrulama fonksiyonunu kodumuza eklemiş oldu.