JSF麻烦豆(范围)

时间:2014-12-18 21:31:46

标签: jsf session scope request javabeans

所以我正在测试我的JSF应用程序,突然间我无法将我存储在bean中的值拉出来。我从Request范围切换到Session范围,我能够提取一个值,但它似乎是我点击的最后一页的值。

文件结构如下: About.xhtml设置存储在Bean上的页码,然后调用Layout.xhtml调用Bean.Method()以获取Content_About.xhtml,根据About.xhtml文件中声明的页码,将一些文本加载到页面。 / p>

根据我的理解,只要我不需要在页面加载之后访问存储的信息,请求范围就可以工作,但它的行为就像没有设置页码一样。

声明了Session范围后,它会加载文本,但好像它正在构建页面,然后更改bean中的存储值。它要求我点击我想要两次的页面才能在页面上获得正确的信息。

任何帮助表示感谢。

进一步调查:我能够执行以下操作,但在方法调用之前和之后显示正确的页码以加载内容。

Page Number: #{MainBean.getPage()}
<h:form>
<ui:include src="#{MainBean.Content()}"></ui:include>
</h:form>
Page Number: #{MainBean.getPage()}

1 个答案:

答案 0 :(得分:0)

接受首先构建ui,使用存储变量的默认值,我在调用layout时继续设置ui声明中的值。

我有类似的东西:

#{MainBean.setLevel(0)}
#{MainBean.setPage(1)}
<ui:include src="Layout.xhtml"></ui:include>

并将其更改为:

    <ui:include src="#{MainBean.setLayout(0,1)}"></ui:include>

public String setLayout(int lvl, int pg)
    {
        setLevel(lvl);
        setPage(pg);

        return GetPath()+"Layout.xhtml";
    }

这允许在构造ui期间设置bean的变量,并继续执行其余的请求。