@PostConstruct açıklamasını kullanarak bir sayfa dizeleri için verileri başlatmak için f: viewAction veya preRenderView olayını ne zaman kullanmalısınız?
Kullanım <f:viewAction>
HTML kılınmış önce bir yöntemi yürütmek istediğinizde. Bu, özellikle <f:viewParam>
güncelleme modeli değerleri aşamasında tarafından ayarlanan model değerlerine dayalı eylemler gerçekleştirmek istiyorsanız yararlıdır . Yani, şu an koşularda mevcut değiller @PostConstruct
. JSF 2.0 / 2.1'de bu etiket mevcut değildi ve preRenderView
geçici çözümü kullanmanız gerekiyor .
Destek fasulyesi @RequestScoped ise, aynı şeyi etkili bir şekilde yapıyorlar mı? (ve böylece geliştiricinin seçimine kalmış mı? (@PostConstruct "daha temiz" görünüyor).
Hayır, kesinlikle aynı şeyi etkili bir şekilde yapmıyorlar. @PostConstruct
Eylemleri gerçekleştirmek için intented olduğunu doğrudan fasulye inşaat ve tüm enjekte bağımlılıkları ayarı ve bu şekilde yönetilen özellikleri sonra @EJB
, @Inject
, @ManagedProperty
vb Yani, enjekte bağımlılıkları fasulye kurucu içinde kullanılamaz. Bu nedenle, bean görüntüleme, oturum veya uygulama kapsamlı olduğunda, görünüm, oturum veya uygulama başına yalnızca bir kez çalışacaktır. <f:viewAction>
Sadece ilk GET isteği üzerine çağrılan varsayılan olarak, ancak aktarma yöntemiyle onPostback="true"
özniteliği sıra geri gönderme istekleri çağrılır üzere yapılandırılabilir. preRenderView
Olay her HTTP isteği üzerine çağrılır (evet, bu da ajax istekler için de!).
Kullanımı özetlenmiştir @PostConstruct
sen enjekte bağımlılıkları ve tarafından belirlenir yönetilen özelliklerine eylemleri gerçekleştirmek istiyorsanız @EJB
, @Inject
, @ManagedProperty
fasulye yapımı sırasında, vb. Kullan <f:viewAction>
eğer ayrıca belirlediği özelliklerine eylemleri gerçekleştirmek istiyoruz <f:viewParam>
. Hala JSF 2.0 / 2.1 kullanıyorsanız, preRenderView
yerine kullanın <f:viewAction>
. İşlemi yalnızca ilk istek üzerine FacesContext#isPostback()
gerçekleştirmek için gerekirse bir kontrol ekleyebilirsiniz preRenderView
.
Ayrıca bakınız: