2011-03-28 13 views
5

Kapsamlı JSF yönetilen fasulye oturumunu dönüştürmek için çalışıyorum. Bu fasülye xhtml sayfasına erişmeye çalıştığınızda Ancak, o zaman ben aşağıdaki hatayı alıyorum:JSF2 (Mojarra) Görünüm Kapsamı Yönetilen Bean, tüm üyelerin Serializable olmasını istiyor

java.io.NotSerializableException:

foo.bar.SomeDaoClass

Bir yardımcı DAO üyesi olduğunu ben Fasulye içinde kalıcılığı ile ilgili görevleri temsil etmek için kullanın. Bu DAO sınıfını Serializable uygularsam, diğer UIComponent referansları aynı hatalara neden olur!

Ana kullanım durumu, bir oturum fasulyesi tarafından desteklenen xhtml sayfasını gösteren jquery lightbox açılır penceresini açtığım tıklamayla ilgili bir bağlantım olmasıdır. Kullanıcı açılır forma gönder düğmesini tıklattığında, oturum düzenini programlı olarak kaldırırım. Sorun, kullanıcı açılır pencerenin kapama düğmesine tıklarsa ve başka bir kimliğe işaret eden başka bir bağlantıyı tıklarsa, o zaman aynı değerler gösterilir (oturumun kapsamı).

Bu formu bir açılır pencerede görüntülerken değerleri korumak için görünüm kapsamını kullanmak isterim ve kullanıcı açılır pencerenin kapat düğmesini tıklattığında değerler atılabilir. "Özetle: @ViewScoped sonları herhangi UIComponent bağlanma özelliğini kullanarak fasulye bağlandığı zaman"

cevap

5

ama Burada oturum açmayı düşünen ve serializable uygulamasının kullanılmasını zorlayan alternatif olarak görüntüleme kapsamını kullanan ve diğer kullanıcılar için serializable yapmak istemediğiniz özelliklerin yanındaki transient anahtar sözcüğünü kullanabilirsiniz. Bir servisi veya dao'yu aramak istiyorsanız çok yararlı olur.

örnek:

@ManagedBean(name="addressTableBeanExample4") 
@ViewScoped 
public class ExampleBean4 implements Serializable { 

    private static final long serialVersionUID = 1L; 

    // non serialazable class 
    private transient List<Customer> data = new ArrayList<Customer>(); 

    private Customer selected; 
} 
İlgili konular