Kasım 13 2008
Struts 2 Validation -1-
Etiketler : framework, j2ee, java, JSP, Struts 2, validation, xml
Bildiğiniz üzere 2 gün önce LoginForm isminde bir uygulama yapmıştık. Fakat bu uygulamada, herhangi bir validation işlemi yapmadık. Bu yazımda ise sizlere struts 2 server side validation ile ilgili bir örnek yapmak istiyorum. Bu örneğide bir önceki yazımda yapmış olduğumuz LoginForm projesi üzerinde geliştireceğiz. Bu yüzden bu örneği uygulamak isteyenler, önce bir önceki yazımıda okumaları gerekmektedir.
Bu örnek ile struts 2 framework yapısını kullanarak proje geliştirmenin ne kadar kolay olduğunu bir kez daha anlayacağız.
Öncelikle, bir önceki yazımda sizlere yine bahsetmediğim hatta örneği indirip deneyenlerin belkide kafa patlattığı bir konu var oda form elemanlarının tam karşılıklı gelmemesi.
Peki bu sorunu nasıl çözeriz?? cevabı struts.properties dosyası ile. Struts 2 de default olan değerleri değiştirmek için struts.properties dosyasına ihityacımız var. Proje içerisinde istediğiniz bir dizine koyabilirsiniz fakat ben src/ altına açıyorum. Evet form elemanlarının düzgün gözükmesi içinde, içerisine aşağıdaki kodu yazıp kaydediyoruz ve tekrar Tomcat üzerinde projemizi restart ediyoruz.
struts.ui.theme=simple
Browser da http://localhost:8080/LoginForm/ dediğinizde ekran görüntüsü artık aşağıdaki gibi gözükecektir.

Evet artık esas konumuz olan struts 2 server side validation olayına geçebiliriz. Formumuzda 2 tane elemanımız var bunlar “Kullanıcı Adı” ve “Şifre”. Biz bunların boş geçilmesini istemiyoruz, peki ne yapmamız lazım. Tabi client side kontroller yapabilirsiniz fakat bizim amacımız server tarafında da bunu engelleyebilmek. Struts 2 de server side validation için XML tabanlı bir ayar dosyası oluşturmamız gerekmektedir. Peki bu kontrol dosyası hangi anda çalışacak, tabiki “Gönder” düğmesine basıldığı anda. Peki “Gönder” düğmesine basınca bizim hangi action ımız çalıyordu? ben cevaplıyorum tekrar “doLogin”. Yani Login class’ının doLogin methodu. Bu soruları sorup cevabını vermemdeki sebep ise, struts 2 validation dosyasını yaratırken ismine dikkat etmenin gerekliliğidir. İsmi mutlaka “<Class İsmi>-<Class İsmi>_<Action İsmi>-validation.xml” şeklinde olmalıdır. Bizim validation dosyamızın ismi Login-Login_doLogin-validation.xml olacaktır. Action classımız hangi dizinde ise oraya yani bizdeki yeri src/net/gokhansabir/ login/ dizininin altına bu dosyayı atıyoruz. Tamam bunları anlattık fakat validation dosyasının içeriği hakkında daha bilgi vermedik yeri gelmişken hemen yapalım;
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<!-- name alanına JSP dosyamızda yer alan kullanıcı adı
textfield ına vermiş olduğumuz adı yazıyoruz -->
<field name="username">
<!-- struts 2 validation da tanımlı type lar bulunmaktadır.
Biz bu örnekte requiredstring type ını kullanıyoruz -->
<field-validator type="requiredstring">
<!-- ekranda görünmesini istediğimiz mesajı yazıyoruz -->
<message>Kullanici adini bos birakamazsiniz!!!</message>
</field-validator>
</field>
<field name="password">
<field-validator type="requiredstring">
<message>Sifre alanini bos birakamazsiniz!!!</message>
</field-validator>
</field>
</validators>
validation dosyamız artık hazır. Fakat hata mesajlarını göstermek için JSP dosyamızın içerisine “<s:fielderror />” tagını eklememiz gerekiyor. Bunuda ekledikten sonra artık yapmış olduğumuz validation ı test edebiliriz. Projemizi re-start edip browser a http://localhost:8080/LoginForm/ yazıp çalıştırıyoruz. Sonra bilgileri girmeden direk “Gönder” düğmesine basıyoruz. Ekran görüntüsü aşağıdaki gibi olacaktır.
Örneği indirmek için tıklayınız…



