JSF Ders02 - İlk JSF Projesi
Eclipse üzerinden;
File -> New -> Dynamic Web Project yolu izlenir.
- Dynamic Web Project ekranında Configuration kısmında JavaServer Faces seçilmelidir.
- Bir sonraki ekranda otomatik web.xml dosyası oluşturulması için olan seçenek faydamıza olacaktır.
- JSF Capabilities ekranında JSF Implementation Library olarak User, Type olarak Majorra ve Myfaces seçilmelidir.
- Aynı ekranda URL mapping pattern *.jsf olarak düzeltilmelidir.
- ManagedBeanler java sınıflarıdır. Sınıf üzerine konulan @ManagedBean etiketi ile veya face-config.xml dosyasında listelenerek belirtilir.
- ManagedBean sınıfındaki bir değişkene "#{sinifIsmi.degiskenIsmi}" şeklinde erişilebilir.Sınıf içerisinde bu değişkenlerin setter/getter metotları bulunmak zorundadır.
- "#{sinifIsmi.degiskenIsmi}" ifadesinde sınıf isminin ilk harfi daima küçük olarak yazılır.
- "#{sinifIsmi.degiskenIsmi}" ifadesinde değişkeni okurken o değişkenin getter metodu, yazarken ise setter metodu otomatik olarak çağrılır.
- commandButton bean örneklemeyi sağlar. Butona tıklanıldığında hem bean örneklenir hem de commandButton'un "action" kısmında yer alan sayfaya yönlendirme işlemi yapılır.
- Bir form ilk kez görüntülendiğinde input girişinde yer alan "#{sinifIsmi.degiskenIsmi}" ifadesiyle o değikenin ilk değeri görüntülenir. commandButton butonu ile o değişkenin setter metodu çağrılarak yeni değeri atanmış olur.
- Personel sınıfındaki gonder metodu içerisinde yer alan "?faces-redirect=true" ifadesi commandButtona tıklanıldığında urlnin ilgili sayfa ismini alması için kullanılır.Bu kullanılmazsa içerik değişecek ve fakat url değişmeyecektir.
- @SessionScoped etiketi bean örneğinin session (oturum) boyunca bilgileri saklayacağı anlamına gelmektedir.
- Personel sınıfının Serializable arayüzünü implement etmesi bilgilerin session (oturum) boyunca saklaması için gereklidir.
- inputText bir giriş almaya, outputText ise bir çıkış göstermeye yarar.
package test; import java.io.Serializable; import javax.faces.bean.*; @ManagedBean @SessionScoped public class Personel implements Serializable { private static final long serialVersionUID = 1L; private String ad; public void setAd(String ad) { this.ad = ad; } public String getAd() { return ad; } public String gonder() { return ("sayfa1?faces-redirect=true"); } }
index.xhtml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://xmlns.jcp.org/jsf/html"> <h:head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>index.xhtml</title> </h:head> <h:body> <h:form> Adinizi girin.<br /> <h:inputText value="#{personel.ad}" /><br/><br/> <h:commandButton value="giris yap" action="#{personel.gonder}" /> </h:form> </h:body> </html>
sayfa1.xhtml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://xmlns.jcp.org/jsf/html"> <h:head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>sayfa1.xhtml</title> </h:head> <h:body> <h1>Hosgeldin</h1> <h2> <h:outputText value="#{personel.ad}" /> </h2> </h:body> </html>
Yorumlar
Yorum Gönder