Belajar JSF (Java Server Face)

31 Agustus 2008

Ini berawal dari pekerjaan yang sebenarnya harus saya selesaikan beberapa bulan lalu (yang saya pending untuk menyelesaikan S2).  Tidak terlalu diburu deadline tapi harus selesai. Jadi cocok untuk eksperimen hal yang baru :-)

Saya ingin sekali membuat aplikasi web berbasis Java.  Sebelumnya saya belajar PHP, sampai membuat sendiri framework MVC sederhana  (tidak dari nol sih).  Di Java saya pernah mencoba sekilas servlet dan JSP, kemudian men-debug aplikasi web Java yang cukup besar (servlet, JSP, taglib) buatan orang lain.  Yang belum adalah mencoba sendiri salah satu framework.

Berdasarkan pencarian di internet, sepertinya ada dua framework yang paling populer, yaitu Spring dan Struts.  Dari yang saya baca, Struts tampaknya merupakan perbaikan dari Spring, jadi saya tentukan akan menggunakan itu. Saya baca sekilas tutorialnya, tetapi saat saya akan membuat new project di Netbeans saya lihat ada opsi Java Server Face.  Hmm kalau sampai menjadi bagian dari Netbeans pasti lumayan penting nih.  Akhirnya saya coba lihat-lihat tutorial dan …  sepertinya lebih menarik dari Struts :-) .  Struts menurut saya  (dari sudut pandang awam) sekilas seperti MVC biasa, sedangkan pada JSF yang menarik adalah sistemnya yang component based, event based dan statefull.  Saya dulu adalah programmer Delphi (pernah jualan component juga), jadi wajar juga jika saya tertarik dengan konsep JSF ini.

Ada beberapa tutorial, tetapi menurut saya yang paling bagus adalah: http://www.ibm.com/developerworks/library/j-jsf1/ Dia membahas perbandingan JSF dengan Struts plus contoh software pada tutorialnya pas sekali.  Tidak terlalu kompleks tapi juga tidak menggampangkan. Setelah baca tutorial ini Jadi lebih mantap belajar JSF

Berdasarkan apa yang saya baca,  inti JSF mirip dengan dev. tools desktop seperti Delphi atau VB. Kita letakan komponen user interface, kemudian input/outputnya kita hubungkan dengan sumber data, sedangkan  buttonnya kita hubungkan dengan method yang akan menangani event “onclik”.  Saat “button” ditekan, sumber data kita manipulasi dan otomatis komponen di layar yang terhubung dengan sumber data tersebut (Label) akan menampilkan hasilnya.  Bagi pengembang aplikasi dekstop hal ini sangat intuitif ‘kan?

Di JSF, sumber data ini disebut Managed Bean. Jika kita menggunakan  Netbeans meletakan UI-nya  jelas tidak semudah IDE Delphi, menghubungkan komponen dengan sumber data dan event handler juga harus dilakukan secara manual. Tapi ini sudah lebih baik menurut saya.

Untuk selanjutnya saya perlu baca lebih detil lagi, tutorial J2EE di Sun sepertinya bagus. Bab 18-21 membahas JSF secara lebih detil.  Baca dulu ah, nanti akan saya lanjutkan :)

–update 1 sep 08 — Tutorial Sun ternyata tidak terlalu bagus, sekarang saya sedang mencoba membuat aplikasi guestbook. Kena bug  “Cannot find FacesContext “, ternyata jangan lupa tambahkan path /faces pada saat mengeset URL untuk run. Bug kedua “Target Unreachable”: Disebabkan karena saya me-rename nama bean, walaupun sudah dengan refaktor ternyata tetap harus me-rename secara manual di faces-config.xml  –

– update 2 sep 08 –
Buku tamu saya menggunakan satu page, di atas input dan di bawah adalah daftar tamu beserta komentar berbentuk tabel. Untuk sementara tidak menggunakan database, karena saya pikir beans di JSF persistent. OK, jadi ada dua beans, satu TamuBeans untuk input dan DaftarBeans untuk isi tabel.  Saat user submit, action-nya adalah “DaftarBeans.tambahTamu”. Nah, masalahnya bagaimana DaftarBeans mengambil data TamuBeans? Setelah googling ternyata bisa melalui injected bean. Jadi faces.config.xml-nya dibuat sbb:

    <managed-bean>
        <managed-bean-name>TamuBean</managed-bean-name>
        <managed-bean-class>com.yuliadi.bukutamu.TamuBean</managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>
    <managed-bean>
        <managed-bean-name>DaftarTamu</managed-bean-name>
        <managed-bean-class>com.yuliadi.bukutamu.DaftarTamu</managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
        <managed-property>
            <property-name>currentTamu</property-name>
            <value>#{TamuBean}</value>
        </managed-property>
    </managed-bean>

Scope juga harus dibuat jadi “session”, karena jika menggunakan “request” maka DaftarTamu seperti dicreate ulang untuk setiap submit. Untuk menampilkan info mengenai dataTable tag dapat dilihat di http://www.roseindia.net/jsf/dataTable.shtml,  tapi array di contoh tersebut saya ganti dengan List.  Tahap berikutnya saya akan mencoba koneksi dengan database.

Tags:

17 Tanggapan ke “Belajar JSF (Java Server Face)”

  1. angus Berkata

    bookmark dulu bos,…

  2. aryk Berkata

    mas, klo nyetting jsf di ubuntu 8.10 gimana caranya?

  3. yudiwbs Berkata

    bukannya sudah otomatis disediakan netbeans? saya sih menggunakan yang sudah disediakan netbeans.

  4. Ahmad Tanwir Berkata

    Pak, bukannya Sping itu sebagai Ioc, jadi bukannya Struts dan Spring itu saling melengkapi?

  5. yudiwbs Berkata

    @ata, nggak ngerti juga :) Belum pernah nyoba soalnya

  6. yudiwbs Berkata

    @mr x yang sudah memberikan komentar: saya terbuka dengan kritik, dan kritik anda sebenarnya bagus. Tapi karena ditulis dengan tidak sopan dan tidak beradab (dan yang menulis anonim), terpaksa saya moderasi. Saran saya: Berhenti dulu mrogram sejenak dan nikmati hidup dulu deh anda nampaknya terlalu stress :)

  7. wliiy Berkata

    Jadi JSF itu sederhananya apa? Boleh dikata begini kah:
    Netbeans + JSF = IDE mirip Delphi for PHP ?

  8. yudiwbs Berkata

    JSF tidak harus menggunakan netbeans. Netbeans cuma IDE saja. Setahu saya sih, JSF itu sekedar framework untuk membuat aplikasi web.

  9. arif eko Berkata

    wah penjelasannya padat dan jelas, jadi bersemangat pengen melejarin tutorialnya JSF nih, sebelumnya saya nyoba EJB tapi terlalu enterprise banget jadi jatuhnya cuman sampe JB(java Bean). kalu sempat ngasih artikel EJB juga donk. ditunggu

  10. yudiwbs Berkata

    @arif: makasih, tentang EJB, nanti kalau ada waktu :)

  11. rizal Berkata

    mas minta ada g buku or bahan yang lengkap saolnya aq lg ngerjain TA eksplorasi JSF tapi masih bingung?coz emang baru coba Java..
    makasih

  12. driew Berkata

    mas aku butuh ttg jsf donk,,tp yg bener dari basic bgt,,soalnya baru mo bljr nih,,thnx

  13. papa dina Berkata

    Salam kenal pa Yudi,

    Ketika di jakarta dulu saya tertarik banget pake jsf, tapi mungkin karena faktor umur yang sudah cape coding lagi, sy develope pake framework adf faces buatan oracle punya, developement nya cepet, tinggal drag n drop saja. Yang menariknya ADF Faces ini based on JSF juga, jadi bisa dibilang pengembangan dari JSF karena sudah dilengkapi ajax. Sedangkan untuk layer business logic nya, dia pake Business Compoenent (BC), mirip kayak hibernate+ibatis. tutorialnya oke kok, ini linknya http://www.oracle.com/technology/pub/articles/adf-from-design-to-reality/index.html.

    Pa Yudi ada di bandung ya? sy juga lagi di bandung nih , jadi implementator telco di telkom bandung japati.

  14. yudiwbs Berkata

    @papa dina: makasih infonya. JSF ini memang saya rasa belum mature, entah kalau sekarang.

    Saya di Bandung mas, dulu saya pernah kerja praktek di sisfo telkom japati juga. Kapan-kapan mohon share ilmunya di kampus saya mas, supaya mahasiswa dapat pencerahan tentang dunia kerja :)

  15. gardie Berkata

    pak saya mau membuat project jsf pake netbeans tapi untuk plugin instalasi facelet caranya gimana y pak?soalnya error terus pas abiz di aad plugin kemudian dia g mau pesan errorna gini pak:

    Missing required modules for Plugin Facelets Support:
    module org.netbeans.api.java.classpath/1 > 1.0 Java Support APIs [module org.netbeans.api.java/1 > 1.18] module org.netbeans.modules.editor.deprecated.pre61completion/0-1 > 1.0 module org.netbeans.modules.editor.deprecated.pre61settings/0-1 > 1.0 JSP Editor [module org.netbeans.modules.web.core.syntax/2] JSP Parser [module org.netbeans.modules.web.jspparser/3]
    Missing required modules for Plugin Simple JSF/Facelets Snippets:
    module org.netbeans.modules.editor.deprecated.pre61completion/0-1 > 1.0 module org.netbeans.modules.editor.deprecated.pre61settings/0-1 > 1.0 JSP Editor [module org.netbeans.modules.web.core.syntax/2]

    trus bapak punya contoh aplikasi JSF pake netbeans+facelets ga??
    trus ada referensi tempat kursus framework, khususnya JSF yg bagus dimana untuk daerah bandung?
    terimakasih pak..

  16. panji Berkata

    saya suka artikel ini. tapi saya berterimakasih jika dikasih juga tutorial dari 0. dari cara install barangkali, sampai dengan membuat satu simple application. thanks

  17. HackerMpia Berkata

    Keren Bukannya JSF Berat pak kompiku pak arep meledak nih


Tinggalkan Balasan