JSF etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
JSF etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

15 Mart 2011 Salı

JSF 2 & Google App Engine

1.5 saatimi alsa da sonunda Google App Engine üzerinde basit bir JSF2 uygulaması çalıştırmayı başardım.


Sorunları çözmemde şu kaynakların oldukça yardımı oldu:

http://eriahit.wordpress.com/2010/01/19/gae-primefaces-spring-maven/
http://digitaljoel.nerd-herders.com/2009/12/21/jsf-2-0-2-and-google-app-engine/
http://javadocs.wordpress.com/2009/10/17/mojarra-jsf-2-0-rc2-and-google-app-engine-sdk-1-2-6/

1-) GAE ile JSF2 arasında bazı uyuşmazlıklar olduğu için jsf kütüphaneleri olarak aşağıdaki libleri kullanın:
http://joshjcarrier.googlecode.com/svn/trunk/Sun%20JSF%20GAE/jsf-impl-gae.jar
http://joshjcarrier.googlecode.com/svn/trunk/Sun%20JSF%20GAE/lib/jsf-api.jar

2-) Aşağıdaki hata için belirtilen çözüm yolunu uyguladım.

Error:
com.sun.faces.config.ConfigurationException: It appears the JSP version of the container is older than 2.1 and unable to
locate the EL RI expression factory, com.sun.el.ExpressionFactoryImpl. If not using JSP or the EL RI, make sure the co
ntext initialization parameter, com.sun.faces.expressionFactory, is properly set.
Solution:
Include el-api and el-impl from https://uel.dev.java.net/ (version 1.0. used)


Ayrıca bakınız.

2 Temmuz 2010 Cuma

JSF Component Binding

JSF te ön yüzde kullandığımız nesnelerin sunucu sınıflarındaki karşılıklarını oluşturmak için binding özelliği kullanılır.
Örneğin aşağıda bir input nesnesi bulunmakta ve kayitDemo beanindeki adNesnesi ne bind edilmekte.
    <h:inputText value="#{kayitDemo.ad}" binding="#{kayitDemo.adNesnesi}"/>
    <h:commandButton action="#{kayitDemo.kaydet}" value="Kaydet" />
Bu durumda adNesnesi ne aşağıdaki gibi tüm özellikleri ile erişebiliriz.
    public class KayitDemo {
     private String ad;
     private HtmlInputText adNesnesi;
     public void kaydet() {
      System.out.println("ad = " + ad);
      adNesnesi.setMaxlength(6);
      adNesnesi.setReadonly(true);
      adNesnesi.setValue("Ahmet");
     }
     …
    }
Kullanabileceğiniz nesne tipleri listesi aşağıda bulunmaktadır.
HtmlInputHidden
HtmlInputSecret
HtmlInputText
HtmlInputTextarea
HtmlOutputFormat
HtmlSelectManyListbox
HtmlSelectManyMenu
HtmlSelectOneListbox
HtmlSelectOneMenu
HtmlSelectOneRadio
HtmlOutputLabel
HtmlOutputLink
HtmlOutputText
HtmlSelectBooleanCheckbox
HtmlSelectManyCheckbox
UIInput
UIOutput
UISelectBoolean
UISelectMany
UISelectOne


Sürekli işe yarar bir şey olduğu için elimin altında bulunmasını istedim.