0

客户端模式下如何定义最大组件树数?如何防止调用@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 个转换”的情况。

4

0 回答 0