13 Aralık 2013 Cuma

COMPOSIT COMPONENTS(BİLEŞİK BİLEŞENLER)

JSF bileşenlerini bir sayfada bir araya getirerek onları gruplayabiliriz.Kendimize ait bir etiket adı ile de diğer JSF sayfalarından bir gruplanmış bileşeni çağırıp kullanabiliriz.
Composit components kullanılırsa JSF sayfalarının bakımı daha kolay olur.
Composit component sayfalarını aşağıda ki gibi lokalize etmeliyiz.



Burada "resources" klasörüne dikkat etmeliyiz.Başka bir isim altında composit componentleri çağıramıyoruz.
Daha fazla uzatmadan nasıl yazılıp nasıl kullanıldığına dair bir misal verelim.


iletisimForm.xhtml

<body>
        <composite:interface>
            <composite:attribute name="epostavalue"/>
            <composite:attribute name="sifrevalue"/>
            <composite:attribute name="mesajvalue"/>
            <composite:attribute name="gonderButton" method-signature="void action(javax.faces.event.ActionEvent)"/>
        </composite:interface>

        <composite:implementation>
            <h:form id="iletisimFormID">
                <h:panelGrid columns="2">
                    E-Posta:
                    <h:inputText value="#{cc.attrs.epostavalue}" size="30"/>
                    Şifre:
                    <h:inputSecret value="#{cc.attrs.sifrevalue}" size="30"/>
                    Mesaj:
                    <h:inputTextarea value="#{cc.attrs.mesajvalue}" cols="30" rows="10" />
                    <h:commandButton value="Gönder" action="#{cc.attrs.gonderButton}"/>
                </h:panelGrid>
            </h:form>
        </composite:implementation>
    </body>


index.xhtml

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:depo="http://xmlns.jcp.org/jsf/composite/depo"
      xmlns:h="http://xmlns.jcp.org/jsf/html">
    <h:head>
        <title>Facelet Title</title>
    </h:head>
<h:body>
        <depo:iletisimForm epostavalue="#{my.eposta}"
                           sifrevalue="#{my.sifre}"
                           mesajvalue="#{my.mesaj}"
                           gonderButton="#{my.mesajgonder()}"/>
    </h:body>

Sayfamız aşağıda ki gibi olur.




Burada yaptığımız şeylerin aynısını custom tag yazarak da yapabiliriz.Fakat JSF 2.0 dan sonra custom tag lerin yerini composit componentler almıştır.Composit componentleri kullanmak daha kolaydır.Çünkü custom tag yazmak için web.xml e müdahale söz konusudur.Aynı zamanda bu tagleri kaydedip kullanmak için bir taglib.xml dosyasına ihtiyaç duyarız.Bu taglib.xml dosyası her daim taşınıp projeye gömülebilir.Fakat her projede web.xml dosyasına ayar yapmak bir zaman kaybı olacağından custom tag yerine composit componentleri kullanmak daha eftaldir.

Hiç yorum yok:

Yorum Gönder