我有一个像下面给出的Managed Bean。方法[ redirectToViewC ]返回到同一页面(viewC.xhtml)。一旦动作方法执行结束,我想销毁bean 。 如果我返回 viewC?faces-redirect = true ,那么JSF2正在创建bean的新实例。也没有调用Destroy方法id。
如果我返回同一页面,请告诉我如何销毁视图范围的bean。 如果我使用externalcontext.redirect()方法重定向到不同的页面,还有一种方法可以从actionListener方法中销毁视图范围的bean
@ViewScoped
public class ViewC {
private String label ;
public ViewC(){
System.out.println("Constructed View Bean C");
}
@PostConstruct
public void init(){
label = "This is view C";
System.out.println("Initialized View Bean C");
}
@PreDestroy
public void release(){
System.out.println("Destroy View Bean C");
}
public String redirectToViewC(){
/*try {
FacesContext.getCurrentInstance().getExternalContext().redirect("/Test/viewC.jsf?faces-redirect=true");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}*/
return "viewC?faces-redirect=true";
}
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
}