所以我正在测试我的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()}
答案 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的变量,并继续执行其余的请求。