如何在客户端模式下定义组件树的最大数量?如何防止调用@PostConstruct
方法?
我正在使用glassfish 4.1开发JavaEE7的应用程序。
如果我没记错的话,当javax.faces.STATE_SAVING_METHOD
是客户端时,组件树没有限制。
但是当我在Chrome中打开超过25个选项卡并运行第一个选项卡时,该选项卡的托管bean将构建并调用@PostConstruct
方法。
我认为这种行为似乎让我失去了组件树。
以下是我的申请的源代码。
test.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次转换”的情况。