JSF基于单页菜单的导航

时间:2018-02-06 14:25:33

标签: jsf cdi

所以我开发了一个基于JSF的应用程序,它有一个导航菜单(PrimeFaces菜单)和一个中央内容区域,这个内容区域是动态的,它根据导航菜单的活动元素刷新。想象一下如下。

<ui:composition template="/WEB-INF/template.xhtml"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://xmlns.jcp.org/jsf/core"
    xmlns:h="http://xmlns.jcp.org/jsf/html"
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets">

    <ui:define name="nav">
        Navigation menu with items
    </ui:define>

    <ui:define name="content">
        <ui:include src="#{pageManager.currentPage}.xhtml"/>
    </ui:define>
</ui:composition>

每个内容部分(所有基于ajax)都有它自己的模型和它自己的@ViewScoped bean,每个控制器bean都会利用一些CDI bean来做CRUD类型与模型一起操作。这些bean大多只是企业@RequestScoped

一切正常。我的问题是因为技术上从来没有这样的导航(内容div更新,没有来自page1-&gt; page2等的导航)我相信我的所有控制器bean都保留在viewcope中,无论该内容是否有效,我认为注入其中的CDI bean也有效地提升到了视图范围。这是对的吗?

如果有更好的方法,只要它只是页面的内容部分根据活动的菜单选择而改变?

1 个答案:

答案 0 :(得分:1)

只要您需要状态且无法对某些bean使用RequestScope,行为就会与您所描述的完全相同。

如果您对ViewScoped bean中使用的内存大小没有问题,则不必担心。