Rich Faces’ın bize sunduğu görsel açıdan ekileyici hazır temalar var. Bunları kullanmak için ‘h’ tagları yerine ‘rich’ ‘i kullanmamız yeterli fakat, varsayılan’ın haricinde olan temalara nasıl erişiriz? Erişebildiğimiz temaları nasıl kullanabiliriz ve nasıl dinamik bir şekle sokabiliriz.

Projemizin web xml’ini açmamız gerekmekte. Eclipse’de bunun kısa yolu; ‘cntrl+shift+R‘ basıp, textbox’a web.xml yazmaktır.

Web xml’i açtığımızda

  1. <context-param>
  2.   <param-name>org.ajax4jsf.SKIN</param-name>
  3.   <param-value>classic</param-value>
  4.  </context-param>

context-param taglari arasında böyle bir xml bölümü göreceksiniz. Buradaki ‘classic‘ ifadesi, bir temanın ismidir. Eğer oraya bir başka temanın adını yazarsanız, rich faces projenizin görünümü seçtiğiniz temanın görüntüsünü alacaktır.

Peki hangi hazır temalar, rich faces’ın kendisinde var…?
 Plain
 emeraldTown
 blueSky
 wine
 japanCherry
 ruby
 classic
 deepMarine

Bunlardan herhangi birini ‘tema adı ‘ tagları arasına yazarsanız, seçtiğiniz temanın görüntüsünü işlemiş olursunuz. Örneğin ;

  1. <context-param>
  2.   <param-name>org.ajax4jsf.SKIN</param-name>
  3.   <param-value>emeraldTown</param-value>
  4.  </context-param>

Peki dinamik bir şekilde, kullanıcının temayı seçmesi ile temanın değişmesini sağlayacak hale projemizi nasıl getiriririz?

web.xml dosyamızdaki taglar arasınındaki ifadeyi dinamik hale getirmemiz gerekmektedir. Bunun için, önce managedBean oluşturmamız gerekmekte. Örneğin adı skinBean olsun..

Hemen bir SkinBean isminde java class’ı açıyorum ve içerisindeki kodları

  1. public class SkinBean {
  2.  
  3.  private String skinName = "classic";
  4.  
  5.  public void setSkinName(String skinName) {
  6.   this.skinName = skinName;
  7.  }
  8.  
  9.  public String getSkinName() {
  10.   return skinName;
  11.  }
  12. }

Daha sonra bu sınıfımı, managedBean’e kaydediyorum.. ManagedBean’e kaydetmek için, projemin web content klasörünün Web-INF alt klasörünün altında bulunan faces-config.xml dosyasını açıyorum. Açılan sayfanın sol tarafındaki menüsünde Managed Beans yazmakta, orayı tıkladığımızda karşımıza çıkan yeni pencereye Add butonuna tıklayıp skinBean sınıfımızı kaydediyoruz.

SkinBean sınıfımı skinBean olarak Managed Bean’e kaydettiğime göre, sınıfım içindeki değişkenlerin aldığı değerler, otamatik olarak skinBean sayfasından çekilen değerler ile birlikte değişeceğine göre ben web.xml’deki tema adı tagları arasına tema adı yerine #{skinBean.skinName} yazarsam eğer, dinamik bir yapı oluşturmuş olurum.

  1. <contextparam>
  2.   <paramname>org.ajax4jsf.SKIN</paramname>
  3.   <paramvalue>emeraldTown</paramvalue>
  4.  </contextparam>

Şimdi sıra geldi arayüz sayfamıza. Arayüz sayfamıza bir combobox koyacağım. Bu kombobox’da tema isimleri yer alacak. Kullanıcının seçtiği tema, aktif hale gelecek. Bunun için yazmam gereken kod;

  1.                <h:form>
  2.    <h:selectOneMenu value="#{skinBean.skinName}" onchange="submit()">
  3.     <f:selectItem itemLabel="blueSky" itemValue="blueSky"/>
  4.     <f:selectItem itemLabel="emeraldTown" itemValue="emeraldTown"/>
  5.     <f:selectItem itemLabel="blueSky" itemValue="Plain"/>
  6.     <f:selectItem itemLabel="emeraldTown" itemValue="wine"/>
  7.     <f:selectItem itemLabel="blueSky" itemValue="japanCherry"/>
  8.     <f:selectItem itemLabel="emeraldTown" itemValue="ruby"/>
  9.  
  10.    </h:selectOneMenu>
  11.   </h:form>

Bu yazıyı beğendiniz mi ? :




*** *** Rica*** ***

Merhaba, cep telefonları için bir uygulama yazdım. Uygulamamın başarılı olması için onu android marketten indirir misiniz? Kesinlikle virüs ya da benzeri tehlikeler içermemektedir.
Aslında faydasız bir uygulama da değil. Allah korusun, acil durumlarda kan ararsanız eğer, şehre ve kan grubuna göre kan arama uygulaması. indirmek için lütfen : tıklayınız

*** *** Rica*** ***