客户端模式下如何定义最大组件树数?如何防止调用@PostConstruct
方法?
我正在使用 glassfish 4.1 开发 JavaEE7 应用程序。如果我没记错的话,什么时候javax.faces.STATE_SAVING_METHOD
是客户端,没有组件树的限制。但是当我在 Chrome 中打开超过 25 个选项卡并操作第一个选项卡时,该选项卡的托管 bean 将构造并调用@PostConstruct
方法。我认为这种行为似乎对我来说失去了组件树。
以下是我的应用程序的源代码。
测试.xhtml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition
template="/template/template.xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
>
<h:panelGrid columns="5" cellpadding="5" >
<p:commandButton id="returnButton" value="return"
action="#{testEditBean.return()}"
immediate="true"
/>
</h:panelGrid>
</ui:composition>
testBean.java
import java.io.Serializable;
import javax.annotation.PostConstruct;
import javax.faces.view.ViewScoped;
import javax.inject.Named;
@Named(value = "testBean")
@ViewScoped
public class TestBean implements Serializable {
@PostConstruct
public void index() {
}
public String doReturn() {
String ret = "/content/tmp/testSearch.xhtml";
return ret;
}
}
[后记 2016/01/28] 我了解 HTTP 会话存储了视图范围的 bean(最多 25 个)并且视图状态仅存储了组件树。这是我的新问题。
除非我们将 mojjara 2.x 更改为另一个 JSF 实现,否则我们不能打开超过 25 个选项卡?“超过 25 个选项卡”包含“用户打开 2 个选项卡,并且在第 2 个选项卡中发生 23 个转换”的情况。