我正在使用 Mojarra 2.2.12。我有一种情况,即 a@ViewScoped
@ManagedBean
在页面加载时立即被破坏,尽管视图没有结束。仅通过以下内容可重现该问题<h:body>
:
<h:outputText value="#{testBean.value}" />
<h:link outcome="other" includeViewParams="true">link</h:link>
other
必须指不同的视图,而不是相同的视图。没有<f:viewParam>
必要重现问题。
和下面的bean:
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
@ManagedBean
@ViewScoped
public class TestBean implements Serializable {
@PostConstruct
public void init() {
System.out.println("@PostConstruct on " + this);
}
@PreDestroy
public void clear() {
System.out.println("@PreDestroy on " + this);
}
public String getValue() {
return "test";
}
}
如果我们删除includeViewParams="true"
属性,那么 bean 不会立即被销毁。为什么会includeViewParams="true"
导致这种行为?