2012-02-27 17 views

cevap

11

Görünüm kapsamı için çözüm buldum.

public static void removeViewScopedBean(String beanName) 
    { 
     FacesContext.getCurrentInstance().getViewRoot().getViewMap().remove(beanName); 
    } 
+8

Bu sadece düz bir şekilde sakar ve bakla fasulye görmek için gerekli olmamalıdır. – BalusC

+0

@BalusC gerekli olmamalıdır, ancak kullanıcı sayfayı terk ettiğinde Bean'i yok etmek istiyorum (Sekme kapatılarak veya özel URL yazılarak). Ve Görünüm Fasulye, oturum geçerliliğini kaybedene kadar yok edilmez. Yani Görünüm gitti, ama Bean hala orada - bu yüzden tek yol gibi görünüyor. Ve diğer sekmeler hala aktif olduğu sürece Oturum geçersiz hale getirilemez ... – Falco

10

Görünüm, eylem yönteminden olmayan null veya olmayan void döndüğünüzde aynı görünüme geri gider bile fasulye, yeniden oluşturulur kapsamlı. Yani, sadece bu sadece boş bir dize bile, aksiyon yönteminden bir String dönmek:

public String submit() { 
    // ... 

    return ""; 
} 

tamamlanmadan yapmak için, iade sonuca ?faces-redirect=true sorgu dizesi iliştirerek bir yönlendirme gönderirken düşünebilir.

public String submit() { 
    // ... 

    return "viewId?faces-redirect=true"; 
} 

Bir oturum kapsamındaki fasulye ilk önce, şu anda başarmaya çalıştığınız şey için yanlış kapsamı ilk sıradadır. Söz konusu fasülye bir manzaraya sahip olmalıydı. Bunu göz ardı ederek, yalnızca eylem yönteminde modeli yeniden oluşturabilir veya oturumu tamamen geçersiz kılabilir (bu da tüm diğer görünümleri ve oturumları kapsamakta olup, bunun peşinde olduğunuzdan emin değil).

+0

backingbean oturum kapsamıysa ve hala yukarıdaki sonuca ulaşmak istiyorsam ne olur? –

2

sadece açık tüm görünümler:

FacesContext.getCurrentInstance().getViewRoot().getViewMap().clear();

ve tüm görünümleri

+0

Bunu daha çok seviyorum - böylece tek tek fasülyelerin geride kalmasına gerek yok ... temiz kayrak - her şeyi temizle. – Falco

1

Ayrıca javascript sayfayı yenilemek olabilir de Serializable uygular unutmayın, bu nedenle ViewScoped Bean reseted olacak örneğin bir primefaces komutButton:

İlgili konular