SORU
25 Temmuz 2011, PAZARTESİ


Kullanmak <: uı>, etiket dosyaları, kompozit bileşenler ve/veya özel bileşenler?

AKSARAY kullanılarak 2.0 Facelets ile son zamanlarda başladım ve yeni kompozit bileşenleri <ui:include> ve diğer mevcut şablon oluşturma teknikleri Facelets 1 tarafından sunulan bilmek şaşıran var.x.

Bu yaklaşımlar arasındaki fark nedir? Aynı teklif gibi görünüyor işlevsel olarak: <ui:param> vs, <ui:define> <cc:attribute><ui:insert> vs tag dosyaları, varolan şablonları yeniden kullanabilirsiniz. Kompozit bileşenleri durumunda sözdizimi ve açık arabirim belirtimi başka bir şey var mı? Performans farklı olabilir?

CEVAP
25 Temmuz 2011, PAZARTESİ


Bu yaklaşımlar arasındaki fark nedir?

Facelet şablonları

Eğer kullanılabilir şablonlar ana sayfa düzeni parçalara bölmek istiyorsanız Facelet şablonları (<ui:composition>, <ui:include> <ui:decorate>) kullanın. E. g. başlık, menü, içerik, altbilgi, vb.

Örnekler:

Facelet tag dosyaları

Eğer/kod tekrarını önlemek en aza indirmek için kullanılabilir bileşenlerin bir grup olmasını istiyorsanız Facelet tag dosyaları kullanın. E. g. etiket giriş bir grup mesajı bileşenleri. Kompozit bileşenleri ile büyük fark Facelet bir etiket dosyası çıktı UIComponent Bir tek temsil etmemektedir ve bazı durumlarda kompozit bir bileşen yeterli olmadığında tek çözüm olabilir. Genellikle, <ui:param> dosyası içeren bir sinyal, bir ya da daha fazla <ui:include> Bir sahip daha iyi bir etiket dosyası olabilir.

Örnekler:

Kompozit bileşenleri

Eğer tek bir sorumluluk saf XML kullanarak 14 ** tek kullanılabilir bir özel oluşturmak istiyorsanız kompozit malzeme kullanıyorlar. Bu tür kompozit bir bileşen genellikle mevcut bileşenleri ve/veya HTML bir grup oluşur ve fiziksel olarak tek bir bileşen olarak işlenen ve tek fasulye bir özelliği bağlı olması gerekiyordu. E. g. bir bileşen hangi temsil eder Bir tek java.util.Date emlak tarafından 3 bağımlı <h:selectOneMenu> bileşenler veya bileşen olan birleştirir <p:fileUpload> <p:imageCropper> Bir tek <my:uploadAndCropImage> başvuran bir tek özel com.example.Image varlık olarak özellik.

Örnekler:

Özel bileşenler

İşlevi olamaz bileşenleri standart/set destek eksikliği nedeniyle Facelet etiketi dosyalar ya da kompozit bileşenleri ile elde zaman, bir özel bileşenini kullanın. Örnekler PrimeFaces OmniFaces gibi açık kaynak bileşeni kütüphaneler kaynak kodu her yerde bulunabilir.

Etiket işleyicileri

HTML çıktısı işleme yerine AKSARAY bileşen ağacı binayı kontrol etmek istediğiniz zaman, bir bileşen yerine etiket işleyicisi kullanmak gerekir.

Örnekler:


Performans farklı olabilir?

Teknik olarak, performans kaygısı azdır. Seçim beton fonksiyonel gereksinimleri ve soyutlama son derece, yeniden kullanım ve uygulama idame göre yapılmalıdır. Her yaklaşım iyi definied amaç ve sınırlamalar vardır.

Kompozit bileşenleri ancak bina/görünüm geri yükleme sırasında önemli bir yük (özellikle: tasarruf/görünüm durumu geri yükleme sırasında. Ve, mojarra bağlamda, kompozit bileşenleri atama varsayılan değerler ile performans sorunları vardı eski sürümlerinde, bu zaten 2.1.13 beri sabittir. Ayrıca, mojarra bağlamda bir <cc:attribute method-signature> yöntem ifadeler için kullanılır, temel olarak tüm bileşen ağacı yeniden başvurulan HTTP oturumda, bu 2.1.29 / 2.2.8 beri sabit olduğunda memory leak vardı. Bellek sızıntısı aşağıda yaşlı olarak 2.1 sürümlerinde atlanır

<context-param>
    <param-name>com.sun.faces.serializeServerState</param-name>
    <param-value>true</param-value>
</context-param>

Ya da eski 2.2 sürümleri aşağıdaki gibi:

<context-param>
    <param-name>javax.faces.SERIALIZE_SERVER_STATE</param-name>
    <param-value>true</param-value>
</context-param>

""Kompozit bileşenleri ve client performans bir acı olacak, sonra da javax.faces.STATE_SAVING_METHOD set var. çok şey var nispeten hala, Sadece zaten bir basit ile mümkün olan temel işlevleri istiyorsanız kompozit bileşenleri kötüye kullanmayın dosya veya dosya etiketi vardır. Etiket dosyalar üzerinde kompozit bileşenleri tercih eden bir bahane olarak (okuma: *.taglib.xml dosyası gerekli) yapılandırma kolaylığı kullanmayın.

Mojarra bağlamda 2.2.10 veya daha büyük kullanarak, üretim modu için nispeten kısa Facelets yenileme süresi devre dışı bırakmayı unutmayın:

<context-param>
    <param-name>javax.faces.FACELETS_REFRESH_PERIOD</param-name>
    <param-value>-1</param-value>
</context-param>

Kalkınma için bu ayarı kullanmayın, aksi takdirde Facelets dosyalarda değişikliklerin yansıtılması için her sunucu yeniden başlatmanız gerekiyor! Mojarra bağlamda 2.2.11 ve daha yeni, ve MyFaces zaten javax.faces.PROJECT_STAGE 30 ** ayarlandığında 28 ** varsayılan.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • thetrollska

    thetrollska

    2 EKİM 2009
  • Ty Moss

    Ty Moss

    20 Kasım 2007
  • whiteboy7thst

    whiteboy7ths

    1 Temmuz 2009