Сколько информации о состоянии сохраняется в режиме клиента
Как определить максимальное количество компонентных деревьев в режиме клиента? Как предотвратить звонок @PostConstruct
метод?
Я разрабатываю приложение на JavaEE7 с Glassfish 4.1. Если я правильно помню, когда javax.faces.STATE_SAVING_METHOD
является клиентом, нет ограничений на дерево компонентов. Но когда я открыл более 25 вкладок в Chrome и оперировал первой вкладкой, управляемый компонент этой вкладки будет создавать и вызывать @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;
}
}
[postscript 2016/01/28] Я понимаю, что в сеансе HTTP хранятся компоненты видимости (не более 25) и хранится только дерево компонентов. Это мой новый вопрос.
Если мы не изменим mojjara 2.x на другую реализацию JSF, мы не сможем открыть более 25 таблиц? "Более 25 вкладок" содержит этот случай, что "пользователь открывает 2 вкладки, и 23 переходов происходит во 2-й вкладке".