SORU
23 Mart 2012, Cuma


F:PostConstruct preRenderView karşı viewAction /?

Bir @PostConstruct işareti kullanmak yerine bir sayfa başlatmak için veri f:viewAction veya preRenderView olay kullanmalı? Mantık kullanın bir veya diğer temel türü, kapsamı destek bean örneğin Eğer destek bean @RequestScoped, sonra bir seçim kullanarak f:viewAction veya preRenderView üzerinden @PostConstruct başlatmak için size destek fasulye önce işleme manzaralı alakasız olarak iki neden olacaktır aynı etki?

f:viewAction veya preRenderView

<f:metadata>
  <f:viewAction action="#{myBean.initialize}" />
</f:metadata>
<f:metadata>
  <f:event type="preRenderView" listener="#{myBean.initialize}"/>
</f:metadata>

ya

@PostConstruct

public class MyBean
{
    @PostConstruct
    public void initialize()
    {

    }
}

CEVAP
23 Mart 2012, Cuma


Ne zaman bir sayfa bir ayet @PostConstruct ek açıklama kullanarak verileri başlatılamıyor f:viewAction veya preRenderView olay kullanmalı?

HTML işlenen önce render yanıt aşamasının başlarında bir yöntem çalıştırmak istediğinizde <f:viewAction> kullanmak. Bu özellikle eğer eylemler model değerleri güncelleme model değerleri aşamasında <f:viewParam> tarafından, üzerinde mutabık gerçekleştirmek istiyorsanız. Yani şu anda kullanılabilir değil @PostConstruct çalışır. AKSARAY 2.1/2.0, bu etiketi yoktu ve preRenderView geçici çözümü kullanmanız gerekir.

Eğer destek bean @RequestScoped ise, etkili bir şekilde aynı şeyi yapıyorlar mı? (ve bu yüzden, geliştirici seçenek var mı? (@PostConstruct görünüyor "") temizleyici.

Hayır, kesinlikle değil etkili bir şekilde aynı şeyi yapıyorlar. @PostConstruct eylemleri gerçekleştirmek için, amacıdoğrudanfasulye sonra inşaat ve, *, @ManagedProperty, *@Inject11 vb gibi tüm bağımlılıkları enjekte edilen ve yönetilen özellikleri ayarı. Enjekte edilen bağımlılıklar yani fasulye constructor içinde mevcut değildir. Bu nedenle fasulye manzarası, oturum ya da uygulama kapsamına yalnızca bir kez görüntülemek, oturum veya uygulama başına çalışır. Varsayılan olarak, yalnızca ilk çağrıldığında <f:viewAction> GET isteği, ama onPostback="true" öznitelik üzerinden de geri gönderme istekleri çağrılacak yapılandırılabilir. preRenderView olay her HTTP isteği (evet, bu da ajax istekleri içerir!) çağrılır.

Özetlenmiş, eğer enjekte bağımlılıkları eylemleri gerçekleştirmek istiyorsanız @PostConstruct kullanın ve fasulye inşaat sırasında*18, *, @ManagedProperty, **19 vb tarafından ayarlanan özellikler başardı. Eğer preRenderView kullanınayrıcaözellikler <f:viewParam> tarafından ayarlanan eylemleri gerçekleştirmek istiyorum. FacesContext#isPostback() ilk isteği sadece eylemi gerçekleştirmek için gerekirse bir kontrol ekleyebilirsiniz. Eğer hala OLUMSUZLUK varsa 2.0/2.1, <f:viewAction> yerine preRenderView kullanın.

Ayrıca Bkz:

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • David Wills

    David Wills

    31 Aralık 2007
  • KoreanFrogMania님의 채널

    KoreanFrogMa

    18 Aralık 2011
  • SegaAmerica

    SegaAmerica

    5 Mart 2008